DDT page# 0001 next
2: COMMENT ⊗   VALID 00066 PAGES
3: C REC  PAGE   DESCRIPTION
4: C00001 00001
5: C00006 00002    SWITCHES:
6: C00009 00003    COMF←←200000    COMMA TYPED FLAG
7: C00010 00004    RIGHT HALF FLAGS
8: C00012 00005    DEFINE DEVICES
9: C00013 00006    BREAK POINT LOGIC
10: C00014 00007    BCOM:   0
11: C00016 00008    SAVE:   0               SAVE THE ACS AND PI SYSTEM
12: C00019 00009    XEC0:   MOVEM T,TEMDDT
13: C00020 00010    IFN EDDT&1,<STARTA:     0>      START ADDRESS FROM PAPER TAPE
14: C00022 00011    TBLK:   0
15: C00023 00012    IFN FTDSWP&EDDT&1,<
16: C00026 00013    INITIALIZE SWAPPING DDT!!!
17: C00028 00014    GETDDT   CALLED FROM SAVE TO GET DDT INTO CORE!
18: C00032 00015    GETBAK   CALLED FROM RESTORE TO UPDATE SYMBOL TABLE AND GET USER CORE BACK!
19: C00035 00016    DDTREAD   CALLED FROM GETDDT TO READ DDT AND SYMBOL TABLE FROM DISK
20: C00037 00017    SETSYM   CALLED TO READ OR WRITE SYMBOL TABLE
21: C00039 00018    SETBUF   CALLED FROM EXAMINE & DEPOSIT TO READ OR WRITE 32 WORDS OF USER CORE
22: C00041 00019    EXAMINE & DEPOSIT ROUTINES FOR SWAPPING DDT!
23: C00043 00020    DDT STARTS HERE
24: C00047 00021            MOVE T,SYL
25: C00049 00022    RET:    MOVEI P,PS
26: C00051 00023    NUM:    ANDI T,17               T HOLDS CHARACTER
27: C00055 00024    POWER:  TLNN F,FEF
28: C00056 00025    PERIOD: MOVE    T,LLOC          PERIOD ( . ) SEEN.  USUALLY THIS IS CURRENT LOCATION
29: C00058 00026    EVAL0:  HRLOI W1,37777+DELI
30: C00065 00027    SIXBI1: PUSHJ P,TEXIN     INPUT TEXT (SIXBIT)
31: C00067 00028    TAG:    TLNN F,LTF    NO LETTERS IS ERROR
32: C00069 00029    SETNAM: SYMTST
33: C00072 00030    RPRN:   TLNN F,QF               )
34: C00073 00031    REGISTER EXAMINATION LOGIC
35: C00077 00032    LTAB:   MOVSS T         SWAP HALVES FIRST
36: C00079 00033    MODE CONTROL SWITCHES
37: C00082 00034    GO AND EXECUTE LOGIC
38: C00086 00035    IXCT4:  IFE EDDT&1,<    SUBI T,041
39: C00089 00036    IPUSHJ: DPB W1,[POINT 4,CPUSHP,12]      STORE AC FIELD INTO A PUSH
40: C00091 00037    ALL $B COMMANDS OF FORM <A>$<N>B
41: C00093 00038    FETCH AND DEPOSIT INTO MEMORY
42: C00097 00039    FIRARG: MOVEM T,DEFV
43: C00101 00040    CONSYM: MOVEM T,LWT
44: C00103 00041    HLFW:   PRINT AS HALF WORDS
45: C00106 00042    MASK:   TLNE F,QF
46: C00108 00043    SEAR3:  PUSHJ P,FETCH
47: C00110 00044    SETUP:  TROA F,R20F     FOR ZERO ONLY
48: C00112 00045    TOCC:   TRO F,EQF       SET TO REAL NUMERIC MODE
49: C00115 00046    FLOATING POINT OUTPUT
50: C00117 00047    FP7:    JUMPE A,FP7A2
51: C00119 00048    IFN EDDT&1&<EDDT>B36,<
52: C00120 00049    IFN EDDT&1&<EDDT>B36,<
53: C00122 00050    IFN EDDT&1&<EDDT>B36,<
54: C00124 00051    IFN EDDT&1&<EDDT>B36,<
55: C00126 00052    IFN EDDT&1&<EDDT>B36,<
56: C00128 00053    CRN:    MOVEI T,15              CARRIAGE RETURN
57: C00129 00054    IFN EDDT&1,<
58: C00132 00055    IFE EDDT&1,<
59: C00135 00056    BDISP:  POINT 12,DISP(R),11
60: C00137 00057    FLGOUT: SKIPN R,FLGPNT
61: C00140 00058            JRST DDT
62: C00142 00059    DESCRIPTION OF OP DECODER FOR DDT:
63: C00145 00060    41(8)-72(8)      THE ALPHABET IS ENCODED INTO THIS RANGE.
64: C00149 00061    OP DECODER
65: C00153 00062    BEGIN OPDEFS
66: C00159 00063    PNTR:   INST    POINTER TO BITS IN INST
67: C00161 00064    DECT:   TRNE F,OUTF
68: C00164 00065    PATCH:  BLOCK 10
69: C00165 00066    IFN UEDDTS,<
70: C00175 ENDMK
71: C⊗;
    DDT page# 0002 next  prev
73: ;SWITCHES:
74: ;       NONE FOR NORMAL, USER DDT
75: ;       UEDDTS←←1 FOR USER EXEC DDT
76: ;       EXEC DDT SETTINGS:
77: ;               EDDT&1=0                ASSUME UDDT
78: ;               EDDT&2=2                ASSUME EDDT WITH PAPER TAPE
79: ;               EDDT&10=10              ASSUME PDP-10 PAPER TAPE INSTEAD OF PDP-6
80: ;               EDDT&20=20              ASSUME SYSTEM EXEC DDT AND COMPILE SPECIAL CODE!
81: ;               EDDT&40=40              MAKE RELOCATABLE EXEC DDT
82: ;               IF LEFT HALF OF EDDT IS NOT=0, DO A LOC<EDDT>B53
83: 
84: IFNDEF FTDDT,<FTDDT←←-1>
85: IFN FTDDT,<                             ;THIS ENTIRE ASSEMBLY IS CONDITIONAL
86:         IFNDEF FTDSWP,<FTDSWP←←0>
87:         IFNDEF EDDT,<EDDT←←0>
88:         IFE EDDT&20,<FTDSWP←←0>
89:         IFN EDDT,<IFE EDDT&40,<BEGIN DDT>>
90:         SUBTTL  DDT 7 APRL 1968
91: 
92: IFNDEF SAVESW,<SAVESW←0>        ;SET UP A STARTING ADRESS
93: IFNDEF UEDDTS,<UEDDTS←0>        ;SET UP UEDDT
94: 
95: DEFINE XP' (X.,Y.),<
96: X.←←Y.
97: >
98: 
99: IFN EDDT&40,<TITLE DDT - EXEC MODE VERSION>
100: IFN EDDT,<SUBTTL DDT - EXEC MODE VERSION
101:         JOBREL←←37
102:         JOBSYM←←36
103:         ZLOW←←40>
104: 
105: IFE EDDT,<TITLE UDDT - USER MODE DDT
106:         EXTERN JOBREL,JOBSYM,JOBSA,JOBHRL,JOBFF
107:         ZLOW←←140>
108: IFN EDDT&1,<
109: F←←0            ;FLAGS
110: R←←1            ;POINTERS TO TABLES, CORE, ETC.
111: S←←2
112: IFE EDDT&20,<P←←3>      ;SETUP PUSHDOWN POINTER IF NOT SYSTEM
113: W←←4            ;CONTAINS DISPATCH ADDRESS IN WORD ASSEMBLER
114: T←←5            ;TRANSFER DATA
115: W1←←6
116: W2←←7
117: SCH←←10         ;MODE CONTROL SWITCH FOR OUTPUT
118: AR←←11          ;MODE CONTROL SWITCH FOR OUTPUT
119: ODF←←12         ;MODE CONTROL SWITCH FOR OUTPUT - CURRENT RADIX
120: A←←R
121: B←←S
122: TT←←13          ;TEMPORARY
123: >
124: IFE EDDT&1,<
125: F←0             ;FLAGS
126: P←1             ;PUSH DOWN
127: R←2             ;POINTERS TO TABLES, CORE, ETC.
128: S←3
129: W←4             ;CONTAINS DISPATCH ADDRESS IN WORD ASSEMBLER
130: T←5             ;TRANSFER DATA
131: W1←6
132: W2←7
133: SCH←10          ;MODE CONTROL SWITCH FOR OUTPUT
134: AR←11           ;MODE CONTROL SWITCH FOR OUTPUT
135: ODF←12          ;MODE CONTROL SWITCH FOR OUTPUT - CURRENT RADIX
136: A←R
137: B←S
138: TT←13           ;TEMPORARY
139: >
140: 
141: 
142: C←←W
143: 
144: PRS←←4
145: TTYY←←120
146: PTRR←←104
147: PTPP←←100
148: 
149: LPDL←←50                ;MAX LENGTH PUSH DOWN LIST
150: 
    DDT page# 0003 next  prev
152: COMF←←200000    ;COMMA TYPED FLAG
153: TIF←←100000             ;TRUNCATE TO 18 BITS -  SET BY SPACE OR COMMA
154: PTF←←100                ; +, -, OR * HAS BEEN TYPED
155: CTF←←400
156: SF←←4           ;SYLLABLE FLAG
157: QF←←1           ;QUANTITY TYPED IN TO WORD ASSEMBLER
158: 
159: CF←←40          ; $ TYPED
160: CCF←←10000              ; $$ TYPED
161: MF←←2           ;MINUS SIGN TYPED IN
162: LTF←←20         ;LETTER TYPED IN TO CURRENT SYLLABLE
163: ROF←←10         ;REGISTER OPEN FLAG
164: STF←←4000
165: FAF←←1000               ; < TYPED
166: SAF←←2000               ; > TYPED
167: 
168: FPF←←20000              ; . TYPED IN
169: FEF←←400000             ; E FLAG
170: 
171: MLF←←200                ;*FLAG
172: DVF←←40000              ;DIVIDE FLAG
173: 
174: PPID←←0         ;=0 IF SYMBOL TABLE POINTER IS IN JOBSYM
    DDT page# 0004 next  prev
176: ;RIGHT HALF FLAGS
177: 
178: ITF←←2  ;INSTRUCTION TYPED IF ITF=1
179: OUTF←←4 ;OUTPUT IF OUTF=1
180: CF1←←400                ;OUTPUT 1 REGISTER AS CONSTANT
181: LF1←←2000               ;OUTPUT 1 REGISTER AS FORCED SYMBOLIC OR CONSTANT
182: Q2F←←1          ;NUMBER TYPED AFTER ALT MODE 
183: R20F←←10        ;TEMP FLAG USED IN SETUP
184: SBF←←20
185: NAF←←200                ;NEGATIVE ADDRESSES PERMISSABLE
186: POWF←←4000              ;ARGUMENT FOR EXPONENT COMING
187: EQF←←20000      ;WANTS REAL NUMERIC MODE
188: 
189: GLOBAL←←040000          ;GLOBAL SYMBOL
190: LOCAL←←100000
191: PNAME←←740000           ;PROGRAM NAME
192: DELI←←200000            ;DELETE INPUT
193: DELO←←400000            ;DELETE OUTPUT
194: IFE EDDT&1,<
195: LOC 74
196: DDT             ;DDT'S STARTING ADDRESS
197: IFN UEDDTS,<LOC 124
198: DDTREN>>
199: IFE EDDT&1,<RELOC 0>
200: IFN EDDT&<XWD -1,0>,<LOC <EDDT>B53>
201: 
202: 
203: 
204: INTERN DDT,$M,DDTEND
205: 
206: RADIX =10
207: NBP←←8
208: IFN EDDT&20,<NBP←←30>
209: 
210: RADIX =8
211: 
212: IFE UEDDTS,<DEFINE SYMTST<>>
213: IFN UEDDTS,<DEFINE SYMTST
214: <       SKIPE SYMLUZ
215:         PUSHJ P,SYMPR>
216: OPDEF SETPR2[CALLI 400052]
217: MAXPR←←400000   ;MAX SIZE OF UPPER>
    DDT page# 0005 next  prev
219: DEFINE DEVICES
220: <
221: XQ APR,0
222: XQ PI,4
223: XQ IOP,10
224: XQ PAG,24
225: XQ PTP,100
226: XQ PTR,104
227: XQ CTY,120
228: XQ LPT,124
229: XQ DC,200
230: XQ DCB,204
231: XQ DTC,210
232: XQ DTS,214
233: XQ MTC,220
234: XQ MTS,224
235: XQ MTM,230      
236: XQ ADC,240
237: XQ DAC,244
238: XQ DCSA,300
239: XQ DCSB,304
240: XQ DKB,310
241: XQ VMI,364
242: XQ PK,370
243: XQ DIL,374
244: XQ IMP,400
245: XQ TV,404
246: XQ PEN,414
247: XQ ARM,420
248: XQ AD,424
249: XQ DPY,430
250: XQ KBD,434
251: XQ XGP,440
252: XQ DSK,444
253: XQ D11,470
254: XQ PMP,500
255: XQ IBM,504
256: XQ DDD,510
257: XQ PCLK,730
258: XQ AS,774
259: >;END DEVICES
260: 
261: 
262: IFN EDDT&1,<
263: IFE EDDT&20,<
264: 
265: DEFINE XQ(A,B)
266: <A←←B
267: >
268: DEVICES
269: >
270: >
271: 
272: XP OR,<<IOR>>
273: XP JOV,2554B11
274: XP JEN,2545B11
275: IFE EDDT&20,<XP HALT,2542B11>
    DDT page# 0006 next  prev
277: ;BREAK POINT LOGIC
278: ;THE B
279: BP1:    REPEAT NBP,<    0               ;JSR TO HERE FOR BREAKPOINT
280:         JSA T, BCOM
281:         0               ;HOLDS INSTRUCTION WHILE BREAKPOINT IS IN PLACE
282:         0
283: >
284: 
285: B1INS←←BP1+2
286: BPN←←.-4
    DDT page# 0007 next  prev
288: BCOM:   0
289:         POP T,LEAV              ;MOVE INSTRUCTION TO LEAV
290:         MOVEI T,B1SKP-B1INS+1(T)
291:         HRRM T,BCOM3            ;CONDITIONAL BREAK SETUP
292:         MOVEI T,B1CNT-B1SKP(T)
293:         HRRM T,BCOM2            ;PROCEDE COUNTER SETUP
294:         MOVE T,BP1-B1CNT(T)
295: IFN EDDT&1,<    TLZ T,010000            ;TURN OFF USER MODE BIT>
296:         HLLM T,LEAV1            ;SAVE FLAGS FOR RESTORING
297:         EXCH T,BCOM
298: IFN FTDSWP,<
299:         CONSZ APR,MAOFF         ;DON'T LET PDP-6 TAKE BREAKS IF NO DDT!
300:         JRST BCOM3
301:         SKIPE INDDT
302:         SKIPN KEEPIN
303:         HALT NOBREAK
304: >
305: BCOM3:  SKIPN B1SKP             ;ADDR MOD TO LOOK AT COND. INST.
306:         JRST BCOM2
307:         XCT @BCOM3
308:         JRST NOBREAK
309: BCOM2:  SOSG B1CNT              ;ADDR MOD TO LOOK AT PROCEED COUNTER
310:         JRST BREAK
311: NOBREAK:
312:         MOVEM T,AC0+T
313:      LDB T,[POINT 9,LEAV,8]  ;GET INSTRUCTION
314:         CAIL T,264      ;JSR
315:         CAILE T,266     ;JSA,JSP
316:         TRNN T,700      ;UUO
317:         JRST PROC1              ;MUST BE INTERPRETED
318:         CAIE T,260      ;PUSHJ
319:         CAIN T,256      ;XCT
320:         JRST PROC1              ;MUST BE INTERPRETED
321:         MOVE T,AC0+T
322:         JRST 2,@LEAV1           ;RESTORE FLAGS, GO TO LEAV
323: 
324: LEAV1:  XWD 0,LEAV
325: 
326: PROC1:  MOVE T,AC0+T
327:         JSR SAVE
328:         JFCL
329:         JRST PROC2
330: 
331: LEAV:   0                       ;INSTRUCTION MODIFIED
332:         JRST @BCOM
333:         AOS BCOM
334:         JRST @BCOM
335: 
336: BREAK:  JSR SAVE
337:         JRST BREAKA
338:         JRST BREAKB
    DDT page# 0008 next  prev
340: SAVE:   0               ;SAVE THE ACS AND PI SYSTEM
341:         SKIPN SARS
342:         JRST SAV1
343:         AOS SAVE
344:         JRST SAV5
345: SAV1:
346: IFN EDDT&1,<
347:         CONI APR,SAVAPR
348:         CONI PRS,SAVPI
349:         CONO PRS, @SAVPI+1
350: >
351:         MOVEM 17,AC17
352:         HRRZI 17,AC0
353:         BLT 17,AC0+16
354:         MOVE T, SAVE
355:         HLLM T, SAVPI
356: SAV5:   SETOM SARS
357:         MOVEI P,PS
358: IFN FTDSWP&EDDT&1,<
359:         PUSHJ P,GETDDT          ;DO THE SWAPPABLE DDT THING!
360: >
361:         IFE EDDT&1,<PUSHJ P,TTYRET>     ;IN USER MODE, GET INTO DDT MODE
362:         MOVEI F,0
363:         MOVE T,[XWD SCHM,SCH]
364:         BLT T,ODF               ;LOAD THE ACS WITH MODE SWITCHES
365:         JRST @SAVE
366: 
367: XCTBUF:
368:         REPEAT 10,<CONO PRS,@SAVPI
369:                 0
370:                 SKIPA
371:                 AOS .+1
372:                 JRST .
373:                 0
374:         >
375: 
376: XCTQ←←6
377: 
378: RESTORE: SETOM TEM3     ;RESTORE ACS AND PI SYSTEM
379: RESTR1: HRRM T,SAVE
380: IFN 0&EDDT&1,<                  ;SYS WRITE REF KLUDGE HAS BEEN REMOVED.
381:         MOVE T,SAVAPR
382:         ANDI T,SYSCLB!7 
383:         TRNN T,SYSCLB
384:         CONO APR,CLRCLB(T)      ;IF THE SYSTEM WASN'T CLOBBERED WHEN WE CAME 
385:                                 ;IN, THEN IT ISN'T CLOBBERED NOW.
386: >
387:         MOVE T,SAVPI
388:         HLLM T, SAVE
389:         MOVEM W,TEMDDT
390: IFN EDDT&1,<
391:         AND T, SAVPI+1
392:         ANDI T,177
393:         IORI T, 2000    ;TURN ON CHANNELS
394:         EXCH T, SAVPI>
395:         MOVEI W,XCTBUF
396: ZZ←←7
397:         REPEAT 7,<
398:         TRNE T,1<17-ZZ>
399:         MOVEI W,XCTBUF+<XCTQ*ZZ>
400: ZZ←←ZZ-1
401: >
402:         HLL W,SAVE
403:         MOVEM W,RES2
404:         IFE EDDT&1,<AOS RES2>
405:         MOVE T,TEMDDT
406:         MOVEM T,1(W)
407:         HRRZ T,SAVE
408:         HRRM T,4(W)
409:         SKIPGE TEM3
410:         JRST RES3
411:         MOVE T,BCOM
412:         MOVEM T,5(W)
413:         MOVEI T,5(W)
414:         HRRM T,1(W)
415: RES3:
416: IFN EDDT&20,<
417:         MOVE TAC,MONPTR ; RECOMPUTE MONITOR CHECKSUM
418:         PUSHJ P,CHECK
419:         SKIPN $M-1      ; ONLY IF COMMANDS COMING FROM KEYBOARD!
420:         MOVEM TAC1,MONSUM
421: IFN FTDSWP,<
422:         PUSHJ P,GETBAK          ;DO THE SWAPPABLE DDT THING
423: >
424: >
425:         MOVSI 17,AC0
426:         BLT 17,17
427:         SETZM SARS
428:         JRST 2,@RES2
429: 
430: RES2:   0
431: 
    DDT page# 0009 next  prev
433: XEC0:   MOVEM T,TEMDDT
434:         PUSHJ P,CRF
435:         PUSHJ P,TTYLEV
436:         PUSHJ P,INSRTB
437:         MOVE W,TEMDDT   ;IN CASE OF INTERUPTS (JS STUFF)
438:         JSP T,RESTORE   ;RESTORE WILL XCT W
439: XEC1:   JRST DDT                ;USED  AT PROC0
440:         JSR SAVE
441:         PUSHJ P,REMOVB
442:         PUSHJ P,CRF
443:         JRST DD1
444: 
445: 
446: RETB:   HRRZ T,BCOM2    ;SET UP TEXT STRING
447:         SKIPE T,1(T)
448:         HRLI T,(<POINT 7,0>)
449:         MOVEM T,STRING
450:         JRST RET
    DDT page# 0010 next  prev
452: IFN EDDT&1,<STARTA:     0>      ;START ADDRESS FROM PAPER TAPE
453: IOTBL:
454: IFN EDDT&1!UEDDTS,<
455: DEFINE XQ(A,B)
456: <       B
457: >
458: DEVICES
459: >
460: REPEAT 10,<-1>
461: IOTLG←.-IOTBL
462: SAVPI:  0
463: XP $I,SAVPI
464:         1077                    ;TURN OFF CHANNELS 2-7
465: SAVTTY: 0
466: 
467: IFN EDDT&1,<OUTLPT:     0
468: SAVAPR: 0       >
469: OUTRTN:0
470: STRING: 0
471: MSK:    XWD -1,-1
472: XP $M,MSK
473: MXINC:  100
474: BMASK:  0
475: FLGPTR: 0
476: B1ADR:  0
477: B1SKP:  0
478: B1CNT:  0
479: B1STR:  0
480: 
481: DEFINE DBPNT ! (Z.) <XP $!Z.!B,B1ADR+4*Z.-4>
482: 
483: RADIX =10
484: FOR QZ←1,NBP
485: <DBPNT (QZ)
486: >
487: RADIX =8
488: REPEAT NBP*4-4, <       0>
489: 
490: BNADR←←.-4
491: AUTOPI: 0
492: 
493: AC0:    BLOCK 17
494: 
495: AC17:   0
496: 
497: SCHM:   PIN             ;DO NOT CHANGE ORDER
498:         PADSO
499: ODFM:   10
500: 
501: SARS:   0
502: TEM1:   0
503: 
504: PS:     BLOCK LPDL
    DDT page# 0011 next  prev
506: TBLK:   0
507: TEMDDT: 0
508: BLOCK:  0
509: SVF:    0
510: SW1:    0
511: SVFB:   0
512: SVTB:   0
513: BLVL:   0
514: WRD:    0
515: WRD2:   0
516: PRNC:   0
517: 
518: FRASE:  0       ;DONT CHANGE ORDER, SEE  SEARC+3
519: SYL:    0
520: LWT:    0
521: TEM2:   0
522: FRASE1:
523: TEM3:   0
524: DENDDT: 0
525: 
526: PRGM:   0
527: FSV:    0
528: FHTTMP: 0       ;TEMP CELL FOR FLOATING POINT VALUE ACCUMULATION
529: FHDTMP: 0       ;TEMP CELL FOR FLOATING POINT VALUE ACCUMULATION
530: SYM:    0
531: SPSAV:  0       ;POINTER TO LAST SYMBOL TYPED
532: DEFV:   0
533: ULIMIT: 0
534: LLOC:   0
535: LLOCO:  0
536: SAVLOC: 0
537: IOTFLG: 0
538: SYMP:IFN UEDDTS,<EXCSYM;        SO WE CAN DEBUG IT>     XWD PPID,JOBSYM
    DDT page# 0012 next  prev
540: IFN FTDSWP&EDDT&1,<
541: COMMENT ⊗
542: INITIALIZATION ROUTINES FOR SWAPPING DDT AT 203 RESTART
543: SWAPPING DDT CONTROL CELLS AND THEIR MEANINGS:
544: 
545: DDTSWP: -1      ENABLE SWAPPING DDT
546:                 0       DISABLE SWAPPING DDT
547: 
548: →→→→→→→→→→→→→→→→THIS IS THE ONLY CELL YOU SHOULD SET!!!!!
549:                 THIS CELL IS LOOKED AT ONLY AT 203 RESTARTS!
550:                 THEREFORE IT IS NECESSARY TO DO A 203 RESTART TO CHANGE THE
551:                 STATE OF SWAPPING DDT.
552: 
553: NOTDDT: -1      FLUSH DDT ENTIRELY
554: 
555: KEEPIN:         -1      DDT STAYS IN CORE ALWAYS
556:                 0       DDT IS SWAPPABLE
557: 
558:                 EXAMINED AT GETBAK
559:                 SET IN DDTINI AT 203 RESTART
560: 
561: INDDT:          -1      DDT IS IN CORE
562:                 0       DDT IS ON DISK
563: 
564: EXMCOR:         0       EXAMINE & DEPOSIT IN RANGE DDTA TO END OF
565:                         SYMBOL TABLE GO TO DISK
566:                 -1      EXAMINE & DEPOSIT ALWAYS REFERENCE CORE!
567: 
568: 
569: 
570: DDTTRY←←10              ;TRY THIS MANY TIMES ON ERROR
571: 
572: ↑↑DDTSWP:       -1      ;NORMALLY ENABLE SWAPPING
573: ↑↑NOTDDT:       0       ;START WITH DDT
574: 
575: ↑↑KEEPIN:       -1      ;DDT STAYS IN AT LEAST UNTIL THE FIRST START-UP
576: 
577: ↑↑INDDT:        -1      ;DDT STARTS OUT IN CORE!
578: 
579: ↑↑SYMLOC:       0       ;SET BY BEGIN TO CONTENTS OF DDTSYM BEFORE ONCE ONLY CODE
580: 
581: ↑↑EXMCOR:       0       ;REFERENCE CORE AT FIRST
582: 
583: ↑↑DDTSUM:       0       ;CHECKSUM OF DDT
584: 
585: DDTIOP:         0       ;STATE OF IOP SAVED HERE WHEN DDT ENTERED!
586: 
587: SWPWRD:         0       ;PLACE TO KEEP WORD WE ARE DEPOSITING!
588: 
589: USROFF:         0       ;OFFSET FROM CORE TO DISK FOR EXAMINE AND DEPOSIT
590:                         ;SET BY SETUSR
    DDT page# 0013 next  prev
592: ;INITIALIZE SWAPPING DDT!!!
593: 
594: DDTINI:
595:         SKIPE DDTSUM            ;THIS SHOULD TELL US IF DDT HAS
596:                                 ;BEEN WRITTEN ON DISK YET!!!
597:         CONSZ DSK,1B27          ;IS DISK THERE AT ALL
598:         SETZM DDTSWP            ;ASK FOR NO SWAPPING
599:         SKIPN DDTSWP
600:         SKIPN INDDT
601:         CAIA
602:         JRST SETIN
603:         PUSHJ P,DDTREAD         ;TRY TO READ DDT FROM DISK
604:         JRST CANTSWP            ;COULDN'T GET DDT, LOSE BIG!
605:         CAIA                    ;COULDN'T GET SYMBOLS, STICK IT IN
606:         SKIPN DDTSWP
607:         JRST SETIN
608: SETOUT: SETZM KEEPIN
609:         SETZM INDDT
610:         SETZM DDTSYM            ;NO SYMBOLS, NOW
611:         SETZM EXMCOR            ;EXAMINE DISK FOR USER
612:         MOVEI TAC,DDTA
613:         MOVEM TAC,SYSSIZ        ;GIVE LOSERS ALL THIS CORE!
614:         POPJ P,
615: SETIN:  SETOM KEEPIN
616:         HLRE TAC,DDTSYM
617:         MOVMS TAC
618:         ADD TAC,DDTSYM
619:         JUMPN TAC,.+2
620:         MOVEI TAC,DDTEND
621:         HRRZM TAC,SYSSIZ
622:         SETOM EXMCOR            ;EXAMINE CORE ONLY (DDT IS ALWAYS THERE)
623:         POPJ P,
624: CANTSWP:
625:         MOVE TAC,[HALT 201]
626:         MOVEM TAC,DDT
627:         JRST SETOUT
    DDT page# 0014 next  prev
629: ;GETDDT   CALLED FROM SAVE TO GET DDT INTO CORE!
630: 
631: GETDDT: SKIPN INDDT             ;IF DDT ALREADY IN,
632:         CONSO APR,MAOFF         ;OR NOT PDP 10
633:         POPJ P,                 ;THEN NOTHING TO DO
634: 
635: ;HERE WE ATTEMPT TO STOP THE PDP-6 SO IT WON'T MASH DDT OR SYMBOLS
636:         SKIPN   P2NUM           ;SKIP IF THE PDP-6 IS SUPPOSED TO BE THERE
637:         JRST    GETDD1          ;PDP-6 ISN'T THERE.  LET'S SKIP THIS MESS
638:         SETOM   P2STP1
639:         MOVE    TAC,[JSR P2STOP]
640:         EXCH    TAC,40+2*APRCHN ;STORE IT WHERE THE PDP-6 WILL STUMBLE ON IT
641:         MOVEM   TAC,P2STP0      ;STORE OLD JSR
642:         MOVSI   TAC,1           ;NOW WE WAIT FOR THE PDP-6 TO HIT IT
643:         SKIPE   P2STP1          ;WAIT FOR IT TO BE ZERO
644:         SOJG    TAC,.-1         ;LOOP
645:         JUMPG   TAC,GETDD1      ;JUMP IF IT REALLY STOPPED.
646:         JSP     TAC,DDTMES
647:         ASCIZ   /STOP THE PDP-6 AND CONTINUE THE -10
648: /
649:         HALT    GETDD1
650: 
651: GETDD1: MOVSI   TAC,1           ;WAIT FOR THE IBM DISK TO STOP SPINNING
652:         CONSO   PMP,100020      ;WAIT FOR CHANNEL TO REQUEST INTERRUPT OR IDLE
653:         SOJGE   TAC,.-1         ;...
654:         MOVEI   TAC,.           ;LET'S SEE WHERE WE ARE.
655:         CAMGE   TAC,37          ;HAS 37 BEEN CLOBBERED?
656:         JRST    GETDD2          ;I SUPPOSE WE'LL LET IT ALONE.
657:         CAMGE   TAC,RMEMSIZE    ;I HOPE THIS ISNT
658:         MOVE    TAC,RMEMSIZE
659:         SUBI    TAC,1
660:         MOVEM   TAC,37
661: 
662: GETDD2: CONSO   IOP,777770      ;IS IOP ACTIVE?
663:         JRST    IOPFRE          ;NO
664:         MOVSI TAC,1
665:         CONSO IOP,IOPANY!IOPJDN ;WAIT FOR IT TO BECOME INACTIVE
666:         SOJG TAC,.-1            ;IN CASE IT IS HUNG!
667: IOPFRE: CONI IOP,TAC            ;SAVE STATE OF IOP
668:         TRNN TAC,IOPRLY         ;ANY IOP ERRORS WE CAN'T SAVE?
669:         CONSZ DSK,3770          ;ANY DISK ERRORS WE CAN'T SAVE?
670:         TRO TAC,IOPMIS          ;YES, SET DATA MISS FLAG
671:         MOVEM TAC,DDTIOP        ;SAVE BITS HERE TO PUT BACK LATER!
672:         MOVEI TAC1,DDTTRY       ;TRY THIS MANY TIMES
673: OUTLOS: CONO DSK,0              ;BLAST DISK
674:         CONO IOP,100            ;WRITE THIS TIME
675:         PUSHJ P,SETUSR          ;SET-UP USER ADDRESSES AND START TRANSFER
676:         SOJG TAC1,OUTLOS
677:         JUMPG TAC1,NOLOSO               ;WIN
678:         JSP TAC,DDTMES
679:         ASCIZ/
680: FAILED TO GET USER WRITTEN OUT!
681: CONTINUE TO TRY TO GET DDT IN.
682: /
683:         HALT .+1
684: NOLOSO: PUSHJ P,DDTREAD ;TRY TO READ IN DDT
685:         JRST NODDT
686:         JRST NOSYM
687: LOSCON: CONO IOP,@DDTIOP
688:         POPJ P,                 ;ALL IS WELL
689: NODDT:  JSP TAC,DDTMES
690:         ASCIZ/
691: FAILED TO GET DDT IN AT ALL!
692: CONTINUE TO TRY AGAIN.
693: /
694:         HALT NOLOSO
695: NOSYM:  JSP TAC,DDTMES
696:         ASCIZ/
697: FAILED TO GET SYMBOL TABLE IN!
698: CONTINUE TO ENTER DDT ANYWAY.
699: /
700:         HALT LOSCON
    DDT page# 0015 next  prev
702: ;GETBAK   CALLED FROM RESTORE TO UPDATE SYMBOL TABLE AND GET USER CORE BACK!
703: 
704: GETBAK: CONSO APR,MAOFF
705:         POPJ P,                 ;PDP-6 DOESN'T DO ANYTHING
706:         SKIPN KEEPIN            ;DDT GOING OUT?
707:         SKIPN INDDT             ;AND IN NOW
708:         POPJ P,                 ;NO
709:         SETZM DDTSYM            ;NO DDT, NO SYMBOLS.
710: ;THE FOLLOWING SEMICOLONED OUT TO KEEP SYMBOLS IN ONE PIECE!
711: ;       MOVEI TAC1,DDTTRY       ;UPDATE DDT ONLY IN SWAPPING DDT ENVIRONMENT
712: ;WRTLOS:        CONO DSK,0
713: ;       CONO IOP,100            ;WRITE SYMBOL TABLE
714: ;       PUSHJ P,SETSYM          ;UPDATE SYMBOL TABLE!!!
715: ;       SOJG TAC1,WRTLOS        ;TRY AGAIN?
716: ;       JUMPG TAC1,NOUPDATE     ;DID WE WIN?
717: ;       JSP TAC,DDTMES
718: ;       ASCIZ/
719: ;COULDN'T UPDATE YOUR SYMBOL TABLE ON THE DISK, SORRY!
720: ;/
721: NOUPDATE:
722:         MOVEI TAC1,DDTTRY       ;NOW TO RESTORE LOSER CORE
723:         SETZM INDDT             ;DDT NO LONGER IN CORE
724: USRLOS: CONO DSK,0
725:         CONO IOP,0              ;READ LOSER THIS TIME
726:         PUSHJ P,SETUSR
727:         SOJG TAC1,USRLOS
728:         CONO IOP,@DDTIOP
729:         JUMPG TAC1,USRLS1       ;DID WE GET HIM BACK IN?
730:         JSP TAC,DDTMES
731:         ASCIZ/
732: FAILED TO RESTORE LOSER CORE!
733: CONTINUE TO IGNORE.
734: /
735:         HALT .+1
736: USRLS1: MOVE    TAC,P2STP0      ;GET OLD JSR BACK
737:         MOVEM   TAC,40+APRCHN*2
738:         SETOM   P2STP1          ;FLAG THE PDP-6 TO CONTINUE
739:         POPJ    P,
740: 
741: P2STP0: 0                       ;HERE TO SAVE LOC 46
742: P2STP1: 0                       ;FLAG FOR PDP-6 IS WAITING
743: P2STP2: 0                       ;PDP-6 STORES TAC WHILE WAITING FOR DDT EXIT
744: P2STOP: 0                       ;JSR HERE IN CLOCK CHANNEL TO WAIT WHILE IN DDT
745:         CONO    PI,PIOFF        ;STOP THE WORLD
746:         MOVEM   TAC,P2STP2      ;SAVE AN AC
747:         SETZM   P2STP1          ;TELL THE PDP-10 THAT WE'RE STOPPED
748:         MOVE    TAC,P2STP1
749:         JUMPE   TAC,.-1         ;WAIT FOR THE 10 TO FINISH
750:         MOVE    TAC,P2STP2      ;RESTORE TAC
751:         CONO    PI,PION
752:         JEN     @P2STOP
    DDT page# 0016 next  prev
754: ;DDTREAD   CALLED FROM GETDDT TO READ DDT AND SYMBOL TABLE FROM DISK
755: 
756: DDTREAD:MOVEI TAC1,DDTTRY
757: DDTLOS: CONO DSK,0
758:         CONO IOP,0              ;READ THIS TIME
759:         MOVE TAC,[XWD DDTA-DDTEND-40,DDTA]
760:         ANDCMI TAC,37
761:         DATAO IOP,TAC
762:         MOVEI TAC,DDTA
763:         ASH TAC,-5
764:         PUSHJ P,SECTOR
765:         PUSHJ P,IOPWAIT
766:         SOJG TAC1,DDTLOS
767:         SETZM DDTSYM
768:         JUMPLE TAC1,CPOPJ
769:         SETOM INDDT             ;FLAG DDT IN CORE
770:         MOVE TAC,[XWD DDTA-DDTEND,DDTA]
771:         PUSHJ P,CHECK           ;CHECKSUM DDT!
772:         SKIPN DDTSUM            ;IS THERE A CHECKSUM THERE?
773:         MOVEM TAC1,DDTSUM       ;NO, USE THIS ONE
774:         CAMN TAC1,DDTSUM        ;CHECKSUM OK?
775:         JRST SUMOK              ;YES
776:         JSP TAC,DDTMES
777:         ASCIZ/
778: DDT CHECKSUM FAILURE!
779: /
780: SUMOK:  MOVEI TAC1,DDTTRY
781: SYMLOS: CONO DSK,0
782:         CONO IOP,0              ;READ SYMBOL TABLE
783:         PUSHJ P,SETSYM
784:         SOJG TAC1,SYMLOS
785:         JUMPLE TAC1,CPOPJ1      ;LOSE ON SYMBOL TABLE READ
786:         MOVE TAC,SYMLOC
787:         ANDCMI TAC,777740
788:         ADDI TAC,DDTEND
789:         MOVEM TAC,DDTSYM        ;THIS IS WHERE THE SYMBOL TABLE IS
790:         JRST CPOPJ2
    DDT page# 0017 next  prev
792: ;SETSYM   CALLED TO READ OR WRITE SYMBOL TABLE
793: 
794: SETSYM: SKIPN TAC,SYMLOC
795:         POPJ P,
796:         HLLZS TAC
797:         ADD TAC,[XWD -40,DDTEND]
798:         DATAO IOP,TAC
799:         HRRZ TAC,SYMLOC
800:         ASH TAC,-5
801:         PUSHJ P,SECTOR
802:         JRST IOPWAIT            ;SKIP RETURNS IF ALL OK
803: 
804: ;SETUSR   CALLED TO READ OR WRITE USER CORE IN DDT REGION
805: 
806: SETUSR: MOVSI TAC,DDTA-DDTEND-100       ;LET'S BE CAREFUL
807:         ADD TAC,SYMLOC          ;AND LENGTH OF SYMBOL TABLE
808:         HRRI TAC,DDTA
809:         ANDCMI TAC,37           ;ROUND IT OFF TO NEAREST SECTOR
810:         MOVEM TAC,BOOTWC        ;SAVE FOR BOOT HACK
811:         DATAO IOP,TAC           ;PHEW!
812:         HLRE TAC,SYMLOC         ;LENGTH OF SYMBOL TABLE
813:         MOVMS TAC
814:         ADD TAC,SYMLOC
815:         HRRZS TAC
816:         JUMPN TAC,.+2
817:         MOVEI TAC,BLTBEG        ;MAYBE SYMBOL TABLE LOSES?
818:         ADDI TAC,37
819:         ASH TAC,-5
820:         MOVEM TAC,BOOTSE        ;SAVE FOR BOOT HACK
821:         MOVEM TAC,USROFF
822:         PUSHJ P,USECTOR         ;AND THEY'RE OFF        ;REG 5-9-72
823:         MOVNI TAC,DDTA-37
824:         ASH TAC,-5
825:         ADDM TAC,USROFF
826:         JRST IOPWAIT
    DDT page# 0018 next  prev
828: ;SETBUF   CALLED FROM EXAMINE & DEPOSIT TO READ OR WRITE 32 WORDS OF USER CORE
829: 
830: SETBUF: DATAO IOP,[XWD -40,DDTBUF]      ;THE BUFFER IS EASY
831:         MOVE TAC,R
832:         ASH TAC,-5
833:         ADD TAC,USROFF
834:         PUSHJ P,USECTOR                 ;REG 5-9-72
835:         JRST IOPWAIT
836: 
837: ;DDTMES   TYPES MESSAGE ON CTY
838: ;CALLING SEQUENCE:
839: ;       JSP TAC,DDTMES
840: ;       ASCIZ/MESSAGE/
841: ;       <RETURNS HERE>
842: 
843: DDTMES: HRLI TAC,(<POINT 7,0>)
844:         JSR DDTTYPE
845:         JRST 1(TAC)             ;SEE HOW CLEVER WE ARE!!!!
846: 
847: SECTOR: CAIL TAC,2300           ;NEXT TRACK?
848:         ADDI TAC,1B24-2300      ;TAC←TAC-2300+1B24, WRAPAROUND TO NEXT ONE
849:         ADD TAC,SYSBAND
850:         DATAO DSK,TAC
851:         POPJ P,
852: 
853: USECTOR:        ;SAME AS SECTOR, BUT USES DDTBAND, NOT SYSBAND
854:                 ;WRITE USERS HERE.   REG 5-9-72
855:         CAIL TAC,2300           ;NEXT TRACK?
856:         ADDI TAC,1B24-2300      ;TAC←TAC-2300+1B24, WRAPAROUND TO NEXT ONE
857:         ADD TAC,DDTBAND
858:         DATAO DSK,TAC
859:         POPJ P,
860: 
861: IOPWAIT:
862:         CONSZ DSK,1B27
863:         POPJ P,
864:         MOVSI TAC,2
865:         CONSO IOP,IOPANY!IOPJDN
866:         SOJG TAC,.-1
867:         JUMPE TAC,CPOPJ
868:         CONSO IOP,IOPANY
869:         CONSZ DSK,3770
870:         POPJ P,
871:         JRST CPOPJ1
    DDT page# 0019 next  prev
873: ;EXAMINE & DEPOSIT ROUTINES FOR SWAPPING DDT!
874: ;
875: SWPEXM: CONSO APR,MAOFF
876:         JRST CPOPJ2                     ;PDP-6 GETS CORE!
877:         SKIPN EXMCOR            ;EXAMINING REAL CORE
878:         SKIPE KEEPIN            ;IS THERE SOMETHING ON THE DISK?
879:         JRST CPOPJ2             ;NO, DO NORMAL THING
880:         HLRE W,SYMLOC           ;GET LENGTH OF SYMBOL TABLE (ON DISK)
881:         MOVNS W
882:         CAIL R,DDTA
883:         CAILE R,DDTA+100(W)     ;IS THIS LOCATION ON DISK?
884:         JRST CPOPJ2             ;NO
885:         MOVEI T,DDTTRY
886:         PUSH P,S
887:         PUSH P,R
888: EXMLOS: CONO DSK,0
889:         CONO IOP,0
890:         PUSHJ P,SETBUF
891:         SOJG T,EXMLOS
892:         POP P,R
893:         POP P,S
894:         JUMPLE T,DSKLOS
895:         MOVE T,R
896:         ANDI T,37
897:         MOVE T,DDTBUF(T)
898:         POPJ P,                 ;GOT IT (OFF DISK)
899: DSKLOS: PUSH P,TAC
900:         JSP TAC,DDTMES
901:         ASCIZ/
902: DISK REFERENCE LOST!
903: /
904:         POP P,TAC
905:         JRST CPOPJ1     ;SO SWPDEP WON'T TRY TO WRITE
906: 
907: SWPDEP: MOVEM T,SWPWRD
908:         PUSHJ P,SWPEXM
909:         JRST SWPDP1     ;GOT IT IN!
910:         POPJ P,         ;MAKE BELIEVE IT WON!!
911:         JRST CPOPJ1     ;NOT ON DISK GET FROM CORE
912: SWPDP1: MOVE W,R
913:         ANDI W,37
914:         MOVE T,SWPWRD
915:         MOVEM T,DDTBUF(W)
916:         MOVEI W,DDTTRY
917:         PUSH P,S
918:         PUSH P,R
919: DEPLOS: CONO DSK,0
920:         CONO IOP,100    ;WRITE
921:         PUSHJ P,SETBUF
922:         SOJG W,DEPLOS
923:         POP P,R
924:         POP P,S
925:         MOVE T,SWPWRD
926:         JUMPG W,CPOPJ
927:         SOS (P)                 ;DSKLOS WANTS TO SKIP RETURN
928:         JRST DSKLOS             ;TELL THEM IT LOST
929: 
930: >
    DDT page# 0020 next  prev
932: ;DDT STARTS HERE
933: CPOPJ1: AOS (P)
934: CPOPJ:  POPJ P,
935: IFN FTDSWP,<TMPTAC:     0>
936: DDT:
937: IFN FTDSWP,<
938:         CONSZ APR,MAOFF
939:         JRST DDTP1
940:         SKIPE INDDT
941:         SKIPN KEEPIN
942:         HALT DDT
943: DDTP1:  SKIPE NOTDDT
944:         JRST [  MOVEM TAC,TMPTAC
945:                 MOVE TAC,[POINT 7,[ASCIZ/SORRY, CAN'T GET DDT!
946: /]]
947:                 JSR DDTTYPE
948:                 MOVE TAC,TMPTAC
949:                 HALT DDT]
950: >
951:         JSR SAVE
952: IFN FTDSWP&EDDT&1,<
953:         JRST DDTA
954:         JRST DDTB
955: 
956: 
957: ;MAKE SURE EVERYTHING WE NEED STAYS IN!!!!!!!!!
958: LIT
959: VAR
960: 
961: DDTBUF: BLOCK 40
962: ↑↑DDTA:
963: >;FTDSWP
964:         PUSHJ P,REMOVB
965: DDTB:   PUSHJ P,CHKSYM  ;SEE IF SYMBOL TABLE HAS MOVED
966:          HLRZ T,ESTU            ;THIS SEQUENCE INITS SYM TABLE LOGIC
967:          SUB T,ESTU
968:          MOVE W,@SYMP
969:          ADD T,W                ;IF THE TOP OF THE UNDEFINED SYM TAB DOES
970:          TRNE T,-1              ; NOT POINT TO BOTTOM OF REGULAR SYM TAB,THEN
971:          HRRZM W,ESTU           ; RE-INIT UNDEFINED SYM TABLE POINTER, ESTU.
972:          MOVE T,PRGM
973:          SUB T,W                ;IF THE SYM TABLE PNTR AND THE PROGRAM
974:          TSC T,T                ; NAME (PRGM) PNTR DO NOT END UP IN THE
975:          MOVE W1,PRGM           ; SAME PLACE, OR THEY DO NOT BOTH START ON
976:          XOR W1,W               ; AN EVEN (OR BOTH ON ODD) LOCATION, OR
977:          TRNN W1,1              ; PRGM .GE. 0, THEN RE-INIT PRGM.
978:         JUMPE T,DD1
979:         SETZM PRGM
980:         SETZM BLOCK             ;RESET WORLD
981: DD1:    TLZ F,ROF               ;CLOSE ANY OPEN REGISTER
982:         PUSHJ P,CRF
983: DD1.5:  MOVE T,[XWD SCHM,SCH]
984:         BLT T,ODF       ;LOAD ACS
985: DD2:    SETZM  PRNC             ;PARENTHESES COUNT
986:         MOVEI P,PS
987: LIS:    MOVE T,ESTU
988:         MOVEM T,ESTUT           ;INIT UNDEFINED SYM ASSEM
989:         TDZ F,[XWD 777777-ROF-STF,LF1+CF1+SBF+ITF+EQF+Q2F]
990:         SETZM IOTFLG            ;NOT AN IOT YET
991: LIS0:   TDZ F,[XWD 777777-ROF-STF-FAF-SAF,NAF]
992:         SETZM WRD
993: LIS1:   SETZM FRASE
994: LIS2:   MOVEI T,1
995:         MOVEM T,FRASE1
996:         TLZ F,MLF+DVF
997: L1:     TLZ F,CF+CCF+SF+FPF             ;TURN OFF CONTROL, SYL, PERIOD FLAG
998:         SETZM SYL
999: L1RPR:  SETZM SYM
1000:         MOVEI T,6
1001:         MOVEM T,TEMDDT          ;INIT SYMBOL COUNTER
1002:         MOVE T,[POINT 7,TXT]    ;SET UP POINTER FOR OPEVAL
1003:         MOVEM T,CHP
1004:         SETZM DENDDT
1005:         SETZM WRD2
1006: 
1007: L2:     PUSHJ P,TIN             ;PICK UP CHARACTER
1008:         CAIL T,"A"+40
1009:         CAILE T,"Z"+40
1010:         SKIPA
1011:         TRC T,40
1012:         TLNE F,CF               ;CONTROL FLAG
1013:         JRST L21
1014:         CAIG T,"Z"              ;Z
1015:         CAIGE T,"A"             ;A
1016:         JRST .+2
1017:         JRST LET
1018: L21:    MOVE R,T
1019:         CAILE T,137
1020:         JRST ERR
1021:         IDIVI R,3
1022:         LDB W,BDISP(R+1)
1023:         CAIGE W,MULT-DDT        ;FIRST EVAL ROUTINE
1024:         JRST DDT(W)
    DDT page# 0021 next  prev
1026:         MOVE T,SYL
1027:         TLZN F,LTF
1028:         JRST POWER
1029:         MOVE T,[XWD OPEVAL,EVAL]        ;LOOKUP ROUTINES IN CORRETC ORDER
1030:         SKIPN WRD       ;USE SYMBOL TABLE FST IF SOMETHING THERE
1031:         MOVSS T
1032:         MOVEM T,SAVE
1033:         JRST L213
1034: L212:   HLRZS T,SAVE
1035:         JUMPE T,UND1    ;NEITHER ONE
1036: L213:   PUSHJ P,(T)
1037:         JRST L212       ;TRY NEXT ONE
1038: L4:     TLZE F,MF
1039:         MOVN T,T
1040:         TLNN F,SF
1041:         CAIE W,LPRN-DDT
1042:         JRST .+2
1043:         JRST LPRN
1044: 
1045:         EXCH T,FRASE1
1046:         TLNN F,DVF
1047:         IMULB T,FRASE1
1048:         TLZE F,DVF
1049:         IDIVB T,FRASE1
1050:         CAIGE W,ASSEM-DDT
1051:         JRST DDT(W)             ;MULTIPLY OR DIVIDE
1052:         ADDB T,FRASE
1053:         CAIGE W,SPACE-DDT
1054:         JRST DDT(W)             ; + - @ ,
1055: 
1056:         ADD T,WRD
1057:         TLNE F,TIF              ;TRUNCATE INDICATOR FLAG
1058:         HLL T,WRD               ;TRUNCATE
1059:         MOVEM T,WRD
1060:         TLNN F,QF
1061:         MOVE T,LWT
1062:         SETZM R
1063:         MOVE W1,ESTUT
1064:         CAMN W1,ESTU
1065:         JRST L5
1066:         CAILE W,CARR-DDT
1067:         JRST ERR
1068: L5:     CAIG W,RPRN-DDT
1069:         JRST DDT(W)
1070:         PUSH P,KILRET
1071:         SKIPN PRNC
1072:         JRST DDT(W)
1073: 
1074: ERR:    MOVEI W1,"?"
1075:         JRST WRONG1
1076: UNDEF:  MOVEI W1,"U"
1077:         JRST WRONG1
1078: WRONG:  MOVE W1,[ASCII /XXX/]
1079: WRONG1: MOVEI P,PS
1080:         PUSHJ P,TEXT
1081: IFN EDDT&1,<PUSHJ P,LCT         ;TYPE TAB
1082:         PUSHJ P,LISTEN
1083:         JFCL
1084:         JRST DD2>
    DDT page# 0022 next  prev
1086: RET:    MOVEI P,PS
1087:         PUSHJ P,LCT             ;COMMON RETURN FOR TAB;,JRST LIS
1088:         JRST DD2
1089: 
1090: UND1:   MOVE R,ESTUT            ;UNDEFINED SYM ASSEMBLER
1091:         HLRE S,ESTUT
1092:         ASH S,-1                ;SETUP EVAL END TEST
1093:         HRLOI W1,37777+DELI+LOCAL
1094:         PUSHJ P,EVAL2
1095:         CAIN W,ASSEM-DDT
1096:         TLNN F,ROF
1097:         JRST UNDEF
1098:         SKIPE PRNC
1099:         JRST UNDEF
1100:         MOVEI T,"#"
1101:         CAIE W,ASSEM-DDT
1102:         PUSHJ P,TOUT
1103: 
1104:         MOVN R,[XWD 2,2]
1105:         ADDB R,ESTUT
1106:         MOVE T,SYM
1107:         TLO T,GLOBAL
1108:         MOVEM T,(R)
1109:         HRRZ T,LLOCO
1110:         TLNE F,MF
1111:         TLO T,400000
1112:         MOVEM T,1(R)
1113:         MOVEI T,0
1114:         JRST L4
1115: 
1116: QUESTN: PUSHJ P,CRF             ;LIST UNDEFINED SYMBOLS
1117:         MOVE R,ESTU
1118: QUEST1: JUMPGE R,DD1
1119:         MOVE T, (R)
1120:         SKIPA W1,ESTU
1121: 
1122: QUEST2: ADD W1,[XWD 2,2]
1123:         CAME T,(W1)
1124:         JRST QUEST2
1125: 
1126:         CAME R,W1
1127:         JRST QUEST4
1128:         PUSHJ P,SPT
1129:         PUSHJ P,CRF
1130: QUEST4: ADD R,[XWD 2,2]
1131:         JRST QUEST1
    DDT page# 0023 next  prev
1133: NUM:    ANDI T,17               ;T HOLDS CHARACTER
1134:         TLNE F,CF+FPF
1135:         JRST NM1                ;$ OR . SEEN
1136:         MOVE W,SYL
1137:         LSH W,3
1138:         ADD W,T
1139:         MOVEM W,SYL             ;ACCUMULATE OCTAL VALUE
1140:         MOVE W,DENDDT
1141:         IMULI W,12              ;CONVERT TO DECIMAL
1142:         ADD W,T
1143:         MOVEM W,DENDDT          ;ACCUMULATE DECIMAL VALUE
1144: LE1:    AOJA T,LE1A
1145: 
1146: PERC:   MOVEI T,47+101-13       ;PERCENT SIGN
1147: LET:    TLC F,SF+FPF            ;EXPONENT IFF LTF'*FEF'*(T=105)*SF*FPF=1
1148:         TLZN F,LTF+FEF+SF+FPF
1149:         CAIE T,105              ; E
1150:         TLOA F,LTF
1151:         TLOA F,FEF              ;E SEEN AS EXPONENT
1152:         JRST LET1
1153:         TLZN F,MF               ;MINUS FLAG?
1154:         SKIPA W1,SYL            ;NOT MINUS
1155:         MOVN W1,SYL             ;GOBBLE NEGATIVE VALUE
1156:         MOVEM W1,FSV            ;SAVE FLOATING POINT VALUE.
1157:         SETZM  DENDDT
1158: LET1:   SUBI T,101-13           ;FORM RADIX 50 SYMBOL
1159: LE1A:   TLO F,SF+QF
1160: LE2:    MOVE W,SYM
1161:         MOVEI R,101-13(T)       ;SET UP IN SIXBIT FOR OPEVAL
1162:         IMULI W,50              ;CONVERT TO RADIX 50
1163:         ADD W,T
1164:         SOSGE TEMDDT            ;IGNORE CHARACS AFTER 6
1165:         JRST L2         ;GO IGNORE
1166:         IDPB R,CHP      ;SAVE FOR OPEVAL
1167:         MOVEM W,SYM
1168:         JRST L2
1169: 
1170: NUM1:   EXCH T,WRD2             ;FORM NUMBER AFTER $
1171:         IMULI T,12
1172:         ADDM T,WRD2
1173:         TRO F,Q2F
1174:         JRST L2
1175: 
1176: NM1:    TLNE    F,CF            ;$ SEEN?
1177:         JRST    NUM1            ;YES. NOW NUMBER.
1178:         MOVSI   R,204500        ;FORM FLOATING POINT NUMBER.  R←10.0
1179:         FMPRM   R,FHDTMP        ;MULTIPLY THE DIVISOR BY 10.0
1180:         FMPRM   R,FHTTMP        ;MULTIPLY TOTAL ACCUMULATED NUMBER BY 10.0
1181:         MOVSI   R,211000(T)     ;UNNORMALIZED VALUE OF THIS DIGIT
1182:         FADRB   R,FHTTMP        ;ADD DIGIT TO TOTAL THUS FAR
1183:         FDVR    R,FHDTMP        ;DIVIDE BY APPROPRIATE POWER OF 10.0
1184:         MOVEM   R,SYL           ;STORE FLOATING VALUE
1185:         AOJA    T,LE1A
1186: 
1187: CHKSYM:  HLRZ T,ESTU            ;THIS SEQUENCE INITS SYM TABLE LOGIC
1188:          SUB T,ESTU
1189:          MOVE W,@SYMP
1190:          ADD T,W                ;IF THE TOP OF THE UNDEFINED SYM TAB DOES
1191:          TRNE T,-1              ; NOT POINT TO BOTTOM OF REGULAR SYM TAB,THEN
1192:          HRRZM W,ESTU           ; RE-INIT UNDEFINED SYM TABLE POINTER, ESTU.
1193:          MOVE T,PRGM
1194:          SUB T,W                ;IF THE SYM TABLE PNTR AND THE PROGRAM
1195:          TSC T,T                ; NAME (PRGM) PNTR DO NOT END UP IN THE
1196:          MOVE W1,PRGM           ; SAME PLACE, OR THEY DO NOT BOTH START ON
1197:          XOR W1,W               ; AN EVEN (OR BOTH ON ODD) LOCATION, OR
1198:          TRNN W1,1              ; PRGM .GE. 0, THEN RE-INIT PRGM.
1199:         JUMPE T,CPOPJ
1200:         SETZM PRGM
1201:         SETZM BLOCK             ;RESET WORLD
1202:         POPJ P,
    DDT page# 0024 next  prev
1204: POWER:  TLNN F,FEF
1205:         JRST L4         ;NO EXPONENT
1206:         CAIE W,PLUS
1207:         CAIN W,MINUS
1208:         TROE F,POWF
1209:         TRZA F,POWF
1210:         JRST (W)                ; E+-
1211: 
1212:         MOVE W2,DENDDT
1213:         SETZM  FRASE
1214:         MOVEI W1,FT-1
1215:         TLZE F,MF
1216:         MOVEI W1,FT01
1217:         SKIPA T,FSV
1218: POW2:   LSH W2,-1
1219:         TRZE W2,1
1220:         FMPR T,(W1)
1221:         JUMPE W2,L4
1222:         SOJA W1,POW2
    DDT page# 0025 next  prev
1224: PERIOD: MOVE    T,LLOC          ;PERIOD ( . ) SEEN.  USUALLY THIS IS CURRENT LOCATION
1225:         TLNE    F,SF            ;BUT IF A SYLLABLE HAD BEEN STARTED IT MEANS
1226:         MOVE    T,DENDDT        ;DECIMAL OR FLOATING POINT
1227:         MOVEM   T,SYL
1228:         TLNE    F,FPF           ;FLOATING POINT ON ALREADY?  I.E., ARE THERE 2 PERIODS?
1229:         TLO     F,LTF           ;TWO PERIODS.  THIS ONE IS A LETTER!
1230:         TLON    F,FPF+SF+QF     ;SET FLOATING POINT.  SKIP IF IN THE MIDDLE OF SYL
1231:         MOVEI   T,0             ;AT FRONT OF SYL. DO THE RIGHT THING FOR .69
1232:         IDIVI   T,400           ;FLOAT THE VALUE OF T (HOW?)
1233:         SKIPE   T
1234:         TLC     T,243000
1235:         TLC     W1,233000
1236:         FAD     T,[0]
1237:         FAD     W1,[0]
1238:         FADR    T,W1
1239:         MOVEM   T,FHTTMP        ;STORE FLOATING VALUE
1240:         MOVSI   T,201400
1241:         MOVEM   T,FHDTMP        ;VALUE OF DIVISOR (10.0↑<NUMBER OF DIGITS AFTER POINT>)
1242:         MOVEI   T,45            ;RADIX 50 PERIOD
1243:         JRST    LE2
1244: 
1245: QUAN:   SKIPA T,LWT             ;LAST QUANTITY TYPED
1246: PILOC:  MOVEI T, SAVPI
1247: QUAN1:  MOVEM T,SYL
1248: QUAN2:  TLO F,SF+QF             ;WRD,SYL STARTED
1249:         TLZ F,CF+CCF
1250:         JRST L2
1251: 
1252: CONTRO:
1253: IFN EDDT&1, <                           ;SOME KIND OF ALTMODE
1254:         MOVEI T,"$"     ;$
1255:         PUSHJ P,TOUT            ;TYPE OUT $>
1256: DOLLAR: TLOE F,CF
1257:         TLO F,CCF
1258:         JRST L2
1259: 
    DDT page# 0026 next  prev
1261: EVAL0:  HRLOI W1,37777+DELI
1262:         HLRE S,@SYMP
1263:         ASH S,-1        ;SETUP END TEST
1264:         JRST EVAL3
1265: 
1266: EVAL1:  ADD R,[XWD 2,2]
1267: EVAL2:  SKIPL R
1268:         MOVE R,@SYMP
1269:         AOJG S,CPOPJ            ;TRNASFER IF NO SYMBOL FOUND
1270: EVAL3:  MOVE T,(R)
1271:         XOR T,SYM
1272:         TLNN T,PNAME
1273:         TLOA W1,LOCAL
1274:         TDNE T,W1
1275:         JRST EVAL1
1276:         TLNN T,340000
1277:         JRST EVAL1
1278:         MOVE T,1(R)
1279:         AOS (P)         ;FOUND SYMBOL, SKIP
1280:         POPJ P,
1281: 
1282: ;HERE IS THE WFW BLOCK STRUCTURE PATCH 
1283: EVAL:   SYMTST
1284:         MOVSI W1,DELI
1285:         HLRE S,@SYMP
1286:         ASH S,-1
1287:         SKIPL R,TBLK
1288:         JRST EVL1
1289:         SETZM TBLK
1290:         JRST EVL2
1291: EVL1:   SKIPL R,BLOCK
1292:         JRST EV5
1293: EVL2:   MOVE T,1(R)
1294:         MOVEM T,BLVL
1295:         JRST EV1
1296: 
1297: EV3:    CAMN R,@SYMP
1298:         JRST EV4
1299:         AOJGE S,CPOPJ
1300: EV1:     SUB R,[XWD 2,2]
1301:         MOVE T,(R)
1302:         TDNE T,W1
1303:         JRST EV3
1304:         LDB T,[POINT 4,(R),3]
1305:         CAIN T,3
1306:         JRST EV2
1307:         SKIPN T
1308:         TLOA W1,LOCAL
1309:         SKIPA T,(R)
1310:         JRST EV3
1311:         XOR T,SYM
1312:         TLZ T,740000
1313:         JUMPN T,EV3
1314:         MOVE T,1(R)
1315:         JRST CPOPJ1
1316: 
1317: EV4:    HLRE R,@SYMP
1318:         MOVNS R
1319:         ADD R,@SYMP
1320:         AOJL S,EV1
1321:         POPJ P,
1322: 
1323: EV2:    MOVE T,1(R)
1324:         CAMGE T,BLVL
1325:         JRST EV2A
1326: EV2B:   SUB R,[XWD 2,2]
1327:         ADDI S,1
1328:         LDB T,[POINT 4,(R),3]
1329:         CAIE T,3
1330:         JRST EV2B
1331:         JRST EV2
1332: EV2A:   MOVEM T,BLVL
1333:         JRST EV3
1334: 
1335: EV5:    MOVEI T,1
1336:         MOVEM T,BLVL
1337:         SKIPGE R,PRGM
1338:         JRST EV1
1339:         HLRE R,@SYMP
1340:         MOVNS R
1341:         ADD R,@SYMP
1342:         JRST EV1
1343: 
1344: ;BIT 40 - DELETE OUTPUT
1345: ; 20 - DELETE INPUT
1346: ; 10 - LOCAL
1347: ; 04 -GLOBAL
1348: ; NO BITS - PROGRAM NAME
1349: 
1350: TEXI:   PUSHJ P,TEXIN           ;INPUT TEXT
1351:         MOVEM T,SYL
1352:         MOVEI W1,5
1353:         MOVEI T-1,0
1354:         PUSHJ P,TEXIN
1355:         TLNE F,CCF      ;WAS IT DOUBLE ALTMODE?
1356:         JRST TEXI4      ;PERMIT ALTMODE AS FIRST CHR
1357:         CAIN T,33               ;NEW ALT MODE, ESCAPE
1358:         JRST QUAN2
1359: TEXI4:  TLNN F,CCF
1360:         JRST TEXI5
1361:         MOVE R,WRD2
1362:         CAIE R,7
1363:         JRST SIXBIN
1364:         JRST TEXI6
1365: TEXI5:  TLNE F,CF
1366:         JRST SIXBIN
1367:         SKIPA
1368: TEXI2:  PUSHJ P,TEXIN
1369: TEXI6:  CAMN T,SYL
1370:         SOJA W1,TEXI3
1371:         ROT T,-7
1372:         LSHC T-1,7
1373:         SOJG W1,TEXI2
1374:         TLNN F,CCF
1375:         JRST TEXI2
1376:         LSHC T-1,-43
1377:         PUSH P,F
1378:         TLZ F,CF
1379:         TLO F,QF
1380:         PUSHJ P,DEPRA   ;DEPOSIT
1381:         POP P,F
1382:         AOS LLOCO
1383:         MOVEI T-1,0
1384:         MOVEI W1,5
1385:      JRST TEXI2
1386: 
1387: TEXI3:  LSHC T-1,-43
1388:         JUMPL W1,TEXI7
1389:         JUMPL W1,QUAN1
1390:         LSH T,7
1391:         SOJA W1,.-2
1392: TEXI7:  TLNN F,CCF
1393:         JRST QUAN1
1394:         LSHC T-1,-43
1395:         PUSH P,F
1396:         TLZ F,CF
1397:         TLO F,QF
1398:         PUSHJ P,DEPRA   ;DEPOSIT
1399:         POP P,F
1400:         AOS LLOCO
1401:         MOVEI T,0
1402:         JRST QUAN1
1403: 
1404: BYTI:   TRZN F,Q2F
1405:         JRST PERC       ;JUST PERC IF NO ALTMODE
1406:         SKIPN T,WRD2    ;GET NUMBER OF BITS/BYTE
1407:         JRST BYTIM      ;IF ZERO THEN USE BYTE MASK
1408:         MOVEM T,SVBTI   ;SAVE
1409:         SETZM SVBTI1    ;ASSEMBLED WORD
1410:         MOVEI T,=36     ;TOTAL NUMBER OF BITS
1411:         MOVEM T,SVBTI2
1412: BYTI4:  MOVEI T+1,0     ;READ IN NUMBER
1413: BYTI3:  PUSHJ P,TEXIN   ;NEXT CHR
1414:         CAIN T,","      ;SEPERATES BYTES
1415:         JRST BYTI1
1416:         CAIN T,33       ;ALTMODE TERMINATES
1417:  JRST BYTI2
1418:         CAIL T,"0"      ;CHECK FOR DIGIT
1419:         CAILE T,"7"
1420:         JRST ERR
1421:         IMULI T+1,10
1422:         ADDI T+1,-"0"(T)
1423:         JRST BYTI3
1424: BYTI1:  PUSHJ P,BYTI1A
1425:         JRST BYTI4
1426: BYTI1A: MOVN T+2,SVBTI  ;GET SIZE
1427:         ROT T+1,(T+2)   ;GET THAT MANY BITS INTO LEFT END
1428:         MOVE T,SVBTI1   ;NOW THE PARTIALLY ASSEMBLED WORD
1429:         MOVE T+2,SVBTI  ;SIZE
1430:         CAMLE T+2,SVBTI2        ;MORE THAN WE NEED?
1431:         MOVE T+2,SVBTI2 ;YES, TAKE SMALLER
1432:         LSHC T,(T+2)    ;SHIFT BITS IN
1433:         MOVNS T+2       ;UPDATE NUUMBER OF BITS STILL NEEDED
1434:         ADDM T+2,SVBTI2
1435:         MOVEM T,SVBTI1  ;SAVE WORD
1436:         POPJ P,
1437: BYTI2:  PUSHJ P,BYTI1A
1438:         MOVE T,SVBTI1   ;GET WORD
1439:         LSH T,@SVBTI2   ;SHIFT REST OF WAY
1440:         JRST QUAN1      ;GO PUT IT AWAY
1441: BYTIM:  MOVEI T,=36     ;36 BITS TOTAL
1442:         MOVEM T,SVBTI   ;SAVE FOR INPUT CHECK
1443:         SETZM SVBTI1    ;BUILD WORD HERE
1444:         MOVE T+2,BMASK  ;GET MASK BITS
1445: BYTIM1: MOVEI T+1,0     ;BUILD NUMBER
1446: BYTIM2: PUSHJ P,TEXIN   ;GET CHARACTER
1447:         CAIN T,","      ;COMMA FOR SEPERATOR
1448:         JRST BYTIM3
1449:         CAIN T,33       ;ALTMODE TERMINATES
1450:         JRST BYTIM6
1451:         CAIL T,"0"      ;CHECK FOR VALID DIGIT
1452:         CAILE T,"7"
1453:         JRST ERR
1454:         IMULI T+1,10
1455:         ADDI T+1,-"0"(T)        ;ACCUMULATE NUMBER
1456:         JRST BYTIM2     ;LOOP
1457: BYTIM3: PUSHJ P,BYTIM4  ;GO PROCESS NUMBER
1458:         JRST BYTIM1
1459: BYTIM4: SKIPG SVBTI     ;ROOM FOR MORE?
1460:         POPJ P, ;NO, QUIT
1461:         SETZM SVBTI2    ;COUNT NUMBER OF BITS THIS POSITION
1462:    SKIPL T+2       ;START WITH 1 BITS IN LEFT
1463:         SETCA T+2,0     ;COMPLIMENT
1464: BYTIM5: LSH T+2,1       ;GET NEXT BIT
1465:         ROT T+1,-1      ;MOVE ANOTHHER BIT OF NUMBER TO LEFT END
1466:         AOS SVBTI2      ;SAVE COUNT
1467:         SOSLE SVBTI     ;CHECK TO SEE IF WORD FULL
1468:         JUMPL T+2,BYTIM5        ;NEXT BIT PART OF SAME FIELD?
1469:         MOVE T,SVBTI1   ;NO, GET WORD
1470:         LSHC T,@SVBTI2  ;SHIFT CORRECT NUMBER OF BITS
1471:         MOVEM T,SVBTI1  ;AND SAVE AGAIN
1472:         POPJ P,         ;RETURN
1473: 
1474: BYTIM6: PUSHJ P,BYTIM4  ;PROCESS LAST NUMBER TYPED
1475:         MOVE T,SVBTI1   ;GET WORD
1476:         LSH T,@SVBTI    ;FINISH  SHIFTING
1477:         JRST QUAN1      ;ALL DONE
1478: SVBTI:  0
1479: SVBTI1: 0
1480: SVBTI2: 0
    DDT page# 0027 next  prev
1482: SIXBI1: PUSHJ P,TEXIN    ; INPUT TEXT (SIXBIT)
1483: SIXBIN: CAMN T,SYL
1484:         JRST SIXBI2
1485:         CAIL T,"A"+40
1486:         CAILE T,"Z"+40
1487:         JRST .+2
1488:         SUBI T,40       ;CONVERT LOWER CASE TO UPPER CASE.  REG 7/9/74
1489:         ANDI T,77
1490:         TRC T,40
1491:         ROT T,-6
1492:         LSHC T-1,6
1493:         SOJGE W1,SIXBI1
1494:         TLNN F,CCF
1495:         JRST SIXBI1
1496:         MOVE T,T-1
1497:         PUSH P,F
1498:         TLZ F,CF
1499:         TLO F,QF
1500:         PUSHJ P,DEPRA
1501:         POP P,F
1502:         AOS LLOCO
1503:         MOVEI T-1,0
1504:         MOVEI W1,5
1505:         JRST SIXBI1
1506: SIXBI2: MOVE T,T-1
1507:         JUMPL W1,QUAN1
1508:         LSH T,6
1509:         SOJA W1,.-2
1510: 
1511: KILL:   TLNN F,LTF              ;DELETE SYMBOLS
1512:         JRST ERR
1513:         PUSHJ P,EVAL
1514:         JRST KILL1
1515:         MOVEI T,DELO/200000             ;DELETE OUTPUT
1516:         TLNE F,CCF
1517:         MOVEI T,DELI/200000             ;NO INPUT OR OUTPUT
1518:         DPB T,[POINT 2,(R),1]   ;LEFT 2 BITS IN SYMBOL
1519: KILRET: JRST RET                ;USED AS A CONSTANT
1520: 
1521: 
1522: KILL1:  MOVE R,ESTU             ;REMOVE UNDEFINED SYMS
1523:         JUMPGE R,UNDEF
1524: KILL2:  PUSHJ P,EVAL0
1525:         JRST RET
1526:         PUSHJ P,REMUN
1527:         JRST KILL2
1528: 
1529: REMUN:  MOVE S,[XWD 2,2]        ;REMOVE ONE UNDEFINED SYMBOL
1530:         ADDB S,ESTU
1531:         MOVE W,-2(S)
1532:         MOVEM W,(R)
1533:         MOVE W,-1(S)
1534:         MOVEM W,1(R)
1535:         POPJ P,
1536: 
    DDT page# 0028 next  prev
1538: TAG:    TLNN F,LTF   ; NO LETTERS IS ERROR
1539:         JRST ERR   ; GO SAY ERROR
1540:         TLNE F,FAF   ; DEFINE SYMBOLS
1541:         JRST DEFIN              ;A<B:
1542:         TLNE F,CF               ;DEFINE SYMBOL AS OPEN REGISTER
1543:         JRST SETNAM
1544:         MOVE W,LLOCO
1545:         HRRZM W,DEFV
1546: 
1547: DEFIN:  PUSHJ P,EVAL
1548:         JRST DEF1
1549:         JRST DEF2               ;NO, REDEFINE
1550: DEF1:   MOVN R,[XWD 2,2]
1551:         ADDB R,@SYMP    ;MOVE UNDEFINED TABLE 2 REGISTERS
1552:         HRRZ T,ESTU
1553:         SUBI T,2
1554:         HRL T,ESTU
1555:         HRRM T,ESTU
1556:         SKIPGE ESTU
1557:         BLT T,-1(R)
1558: DEF2:   MOVE T,DEFV
1559:         MOVEM T,1(R)            ;PUT IN NEW VALUE
1560:         MOVSI T,GLOBAL
1561:         IORB T,SYM
1562:         MOVEM T,(R)             ;PUT IN NEW SYM AS GLOBAL
1563:         MOVE R,ESTU
1564: 
1565: DEF3:   JUMPGE R,RET            ;PATCH IN VALUE FOR UNDEF SYM ENTRY
1566:         MOVE T,SYM
1567:     CAME T,(R)
1568:         JRST DEF4
1569:         MOVE S,DEFV
1570:         SKIPGE 1(R)
1571:         MOVN S,S
1572:         PUSH P,R
1573:         MOVE R,1(R)
1574:         PUSHJ P,FETCH
1575:         JRST ERR
1576:         ADD S,T
1577:         HRRM S,T
1578:         PUSHJ P,DEP
1579:         POP P,R
1580:         PUSHJ P,REMUN
1581: DEF4:   ADD R,[XWD 2,2]         ;REMOVE THE NOW DEFINED SYMBOL
1582:         JRST DEF3
    DDT page# 0029 next  prev
1584: SETNAM: SYMTST
1585:         MOVE R,@SYMP            ;SET PROGRAM NAME - DOLLAR COLON
1586: REPEAT 0,<SET1: MOVE W,R
1587: SET2:   JUMPGE R,UNDEF
1588:         MOVE T,(R)
1589:         ADD R,[XWD 2,2]
1590:         TLNE T,PNAME
1591:         JRST SET2
1592:         CAME T,SYM
1593:         JRST SET1
1594:         MOVEM W,PRGM
1595:         JRST RET>
1596: 
1597: SET1:   JUMPGE R,UNDEF
1598:         MOVE T,(R)
1599:         CAMN T,SYM
1600:         JRST SET2
1601:         ADD R,[XWD 2,2]
1602:         JRST SET1
1603: SET2:   MOVEM R,PRGM
1604:         SETZM BLOCK
1605: SET3:   CAMN R,@SYMP
1606:         JRST RET
1607:         SUB R,[XWD 2,2]
1608:         LDB T,[POINT 4,(R),3]
1609:         JUMPE T,RET
1610:         CAIE T,3
1611:         JRST SET3
1612:         MOVE T,(R)
1613:         XOR T,SYM
1614:         TLZ T,740000
1615:         JUMPN T,SET3
1616:         JRST SBPRM
1617: 
1618: SETBLK: TLNN F,LTF
1619:         JRST ERR
1620:         SKIPL R,PRGM
1621:         JRST ERR
1622:         SYMTST
1623: SB1:    CAMN R,@SYMP
1624:         JRST UNDEF
1625:     SUB R,[XWD 2,2]
1626:         LDB T,[POINT 4,(R),3]
1627:         JUMPE T,UNDEF
1628:         CAIE T,3
1629:         JRST SB1
1630:         MOVE T,(R)
1631:         XOR T,SYM
1632:         TLZ T,740000
1633:         JUMPN T,SB1
1634:         TLNE F,CF
1635:         JRST SBPRM
1636:         MOVEM R,TBLK
1637:         JRST L1RPR
1638: SBPRM:  MOVEM R,BLOCK
1639:         JRST RET
1640: 
1641: MULT:   TLOA F,PTF+MLF          ;*
1642: DIVD:   TLO F,DVF+PTF           ;SINGLE QUOTE
1643:         JRST L1
1644: 
1645: ASSEM:  JRST PLUS               ;#
1646: MINUS:  TLO F,MF
1647: PLUS:   TLO F,PTF
1648:         JRST LIS2
1649: 
1650: LPRN:   CAML P,[XWD LPDL-4,0]   ;LEFT PARENTHESIS
1651:         JRST ERR
1652:         PUSH P,F                ;RECURSE FOR OPEN PAREN
1653:         PUSH P,WRD
1654:         PUSH P,FRASE
1655:         PUSH P,FRASE1
1656:         AOS PRNC
1657:         JRST LIS
1658: 
1659: INDIRECT:       HRLZI W,20              ;@
1660:         IORB W,WRD
1661:         TLO F,QF
1662:         JRST LIS2
1663: 
1664: ACCF:   MOVE R,T                ;COMMA
1665:         TLOE F,COMF     ;A COMMA SEEN, WAS IT SECOND?
1666:         JRST ACCCF      ;YES, GO PROCESS
1667:         ADD T,WRD       ;GET TOTAL
1668:         HRRM T,ACCCF    ;AND SAVE
1669:         HLLZ T,R        ;GET LEFT HALF BACK
1670:         LSH R,27
1671:         SKIPE IOTFLG    ;IS THIS AN IOT?
1672:         LSH R,1         ;THEN SHIFT ONE MORE
1673:         ADD T,R
1674:         ADDB T,WRD
1675:         JRST SPACE+1
1676: ACCCF:  MOVSI T,0       ;MODIFIED TO BE LEFT HALF ON ,,
1677:         MOVEM T,WRD
1678:         JRST SPACE+1    ;AND GO
1679: 
1680: SPACE:  TLNE F,QF
1681:         TLO F,TIF
1682: SPAC1:  TLZ F,MF+PTF
1683:         JRST LIS1
    DDT page# 0030 next  prev
1685: RPRN:   TLNN F,QF               ;)
1686:         MOVEI T,0
1687:         MOVS T,T
1688:         SOSGE PRNC
1689:         JRST ERR
1690:         POP P,FRASE1
1691:         POP P,FRASE
1692:         POP P,WRD
1693:         POP P,F
1694:         TLNE F,PTF
1695:         TLNE F,SF
1696:         JRST RPRN1
1697:         MOVEM T,SYL
1698:         TLO F,QF+SF
1699:         JRST L1RPR
1700: RPRN1:  ADDB T,WRD
1701:         TLO F,QF
1702:         JRST L1RPR-1
    DDT page# 0031 next  prev
1704: ;REGISTER EXAMINATION LOGIC
1705: 
1706: LINEF:  PUSHJ P,DEPRA   ;NEXT REGISTER
1707: IFE EDDT&1,<PUSHJ P,CRNRB
1708:         JRST .+2>
1709: LI0:    PUSHJ P,CRF
1710:         AOS T,LLOC
1711: LI1:    HRRZS T
1712:         HRRZM T,LLOC
1713:         HRRZM T,LLOCO
1714:         PUSHJ P,PAD
1715:         MOVEI T,"/"
1716:         TLNE F,STF
1717:         MOVEI T,"!"
1718:         PUSHJ P,TOUT
1719: LI2:    TLZ F,ROF
1720:         PUSHJ P,LCT
1721:         MOVE R,LLOCO
1722:         PUSHJ P,FETCH
1723:         JRST ERR
1724:         TLO F,ROF
1725:         TLNE F,STF
1726:         JRST DD2
1727:         JRST CONSYM             ;RETURN IS A POPJ
1728: 
1729: VARRW:  PUSHJ P,DEPRA           ;↑
1730:         PUSHJ P,CRF
1731:         SOS T,LLOC
1732:         JRST LI1
1733: 
1734: IFN UEDDTS,<                    ;IN UEDDT, DOWN ARROW (CNTL A) MEANS 
1735:                                 ;CARRIAGE RETURN, PLUS WRITE ON L'SCOPE
1736: DARRW:  MOVE    R,LLOCO         ;PICK UP ADDRESS TO DEPOSIT
1737:         SKIPE   SPCFLG          ;HAVE WE BEEN REENTERED?
1738:         CAML    R,SYSTOP        ;IS THIS DEPOSIT WITHIN THE SYSTEM AREA?
1739:         JRST    DARRW1          ;NO.  DON'T PATCH THE DISK
1740:         LSH     R,-5
1741:         MOVEM   R,WCMA+2        ;SAVE SECTOR ADDRESS
1742:         MOVEI   R,40
1743:         MOVEM   R,WCMA+1        ;SAVE WORD COUNT
1744:         MOVEI   R,FBDATA        ;GET ADDRESS OF DATA AREA
1745:         MOVEM   R,WCMA          ;SAVE IT
1746:         MOVEI   R,400100        ;CHANGE THIS WHEN SYSTEM MOVES FROM BAND 100
1747:         FBREAD  R,WCMA          ;READ
1748:         JRST    DARRRE          ;OOPS.
1749:         MOVE    R,LLOCO         ;GET THE ADDRESS AGAIN
1750:         ANDI    R,37            ;GET DISPLACEMENT ONLY
1751:         CAMN    T,FBDATA(R)     ;SAME AS DISK?
1752:         JRST    DARRW1          ;YES. DON'T BOTHER TO WRITE
1753:         MOVEM   T,FBDATA(R)     ;SAVE DATA
1754:         MOVEI   R,400100
1755:         FBWRT   R,WCMA          ;WRITE IT
1756:         JRST    DARRWE          ;OOPS
1757: DARRW1:
1758:         PUSHJ   P,DEPRA         ;CLOSE REGISTER, ETC.
1759:         JRST    DD1             ;RETURN TO MAIN LOOP
1760: 
1761: DARRRE: OUTSTR  [ASCIZ/
1762: FAST BAND READ FAILED./]
1763:         JRST    DARRE
1764: 
1765: DARRWE: OUTSTR  [ASCIZ/
1766: FAST BAND WRITE FAILED./]
1767: DARRE:  OUTSTR  [ASCIZ/
1768: WILL NOT STORE IN CORE EITHER./]
1769:         JRST    DD1
1770: ;>DARRW←←ERR                    ;IN OTHER DDT'S DOWN ARROW IS AN ERROR
1771: 
1772: CARR:   PUSHJ P,DEPRA           ;CLOSE REGISTER
1773:         IFN EDDT&1,<JRST DD1>
1774:         IFE EDDT&1,<JRST DD1.5>
1775: 
1776: 
1777: OCON:   TROA F,LF1+CF1          ;OPEN AS CONSTANT
1778: OSYM:   TRZ F,CF1               ;OPEN SYMBOLICALLY
1779:         TROA F,LF1
1780: SUPTYO: TLOA F,STF              ;SUPPRESS TYPEOUT
1781: SLASH:  TLZ F,STF               ;TYPE OUT REGISTER
1782:         TLNN F,CF               ;WAS $ USED?
1783:         JRST SLAS2              ;NO
1784:         PUSHJ P,EFFECA          ;TRY EFFECTIVE ADR
1785:         JRST ERR                ;WE LOST
1786: SLAS2:  TLNN F,QF
1787:         JRST SLAS1
1788:         MOVE R,LLOC
1789:         MOVEM R,SAVLOC  ;SAVE FOR $CR ETC.
1790:         HRRZM T,LLOC            ;QUANTITY TYPED
1791: SLAS1:  HRRZM T,LLOCO
1792:         JRST LI2
1793: 
1794: ICON:   TLNN F,ROF      ;REGISTER OPENED OR ERR
1795:         JRST ERR
1796:         PUSHJ P,DEPRS
1797:         TLNN F,CF               ;CHECK FOR ALTMODE
1798:         JRST SLAS1
1799:         PUSHJ P,EFFECA
1800:         JRST ERR        ;LOSE
1801:         JRST SLAS1
    DDT page# 0032 next  prev
1803: LTAB:   MOVSS T         ;SWAP HALVES FIRST
1804:         CAIA            ;DON'T DEPOSIT WITH SWAPPED HALVES
1805: TAB:    PUSHJ P,DEPRS   ;OPEN REGISTER OF Q
1806:         TLNN F,CF
1807:         JRST TAB1
1808:         PUSHJ P,EFFECA
1809:         JRST ERR
1810: TAB1:   MOVEI T,-1(T)
1811:         EXCH T,LLOC
1812:         MOVEM T,SAVLOC          ;AGAIN, SAVE IT
1813:         HRROI T,700000
1814:         PUSHJ P,TEXTT
1815:         JRST LI0
1816: 
1817: DEPRA:  MOVE R,SAVLOC
1818:         TLNE F,CF       ;WAS THERE AN ALTMODE?
1819:         EXCH R,LLOC     ;RESTORE OLD LOC
1820:         MOVEM R,SAVLOC  ;AND SAVE THIS
1821:         TLNE F,ROF              ;IF REGISTER IS BEING CHANGED
1822:         TLNN F,QF               ;REMOVE ALL PREVIOUS UNDEFINED
1823:         JRST DEPRS              ;SYMBOL REFERENCES TO IT
1824:         MOVE R,ESTU
1825:         MOVEM W1,ESTU
1826: DEPRA2: JUMPGE R,DEPRS
1827:         HRRZ W,1(R)
1828:         CAMN W,LLOCO
1829:         PUSHJ P,REMUN
1830:         ADD R,[XWD 2,2]
1831:         JRST DEPRA2
1832: 
1833: EQUAL:  TLNE F,CF       ;IF $≡
1834:         TRO F,EQF       ;THEN REAL NUMERIC MODE
1835:         TROA F,LF1+CF1          ;=
1836: PSYM:   TRZ F,CF1               ;@
1837:         TRO F,LF1
1838:         PUSHJ P,CONSYM
1839:         JRST RET
1840: 
1841: R50PNT: LSH T,-36       ;RADIX 50 SYMBOL PRINTER
1842:         TRZ T,3
1843:         PUSHJ P,TOC
1844:         PUSHJ P,TSPC
1845:         SETZM SVFB      ;NO BLOCK NAME
1846:         MOVEI W1,LWT    ;SETUP FOR SPT
1847:         JRST SPT
1848: 
1849: SIXBP:  MOVNI W2,6              ;SIXBIT PRINTER
1850:         MOVE W1,LWT
1851: SIXBP1: MOVEI T,0
1852:         ROTC T,6
1853:         ADDI T,40
1854:         PUSHJ P,TOUT
1855:         AOJL W2,SIXBP1
1856:         POPJ P,
    DDT page# 0033 next  prev
1858: ;MODE CONTROL SWITCHES
1859: 
1860: ;SET JOB NUMBER TO EXAMINE
1861: JOBSET:
1862: IFE UEDDTS,<
1863:         JRST ERR
1864: >;IFE UEDDTS
1865: IFN UEDDTS,<
1866:         MOVE T,WRD2
1867:         SKIPL T
1868:         CAMLE T,400222          ;LEGAL JOB NUMBER?
1869:         JRST UNDEF              ;NO
1870:         MOVEM T,EXJOBN
1871:         JUMPE T,[MOVEI R,37     ;THIS IS EXEC JOBREL
1872:                 JRST .+1]
1873:         MOVEI R,44              ;THIS IS LOSER JOBREL
1874:         PUSHJ P,FETCH
1875:         SETZ T,                 ;NOT FOUND!!!
1876:         MOVEM T,MEMSIZ          ;THIS IS MAX LOC WE ARE LOOKING AT
1877:         SKIPE EXJOBN            ;FORCE SYSTEM SYMS IF LOOKING AT SYSTEM
1878:         TLNN F,CCF              ;DOES HE WANT LOSER SYMS?
1879:         TDZA T,T                ;NO
1880:         SETO T,                 ;YES
1881:         EXCH T,EXSYMS
1882:         CAMN T,EXSYMS           ;CHANGING MODE?
1883:         JUMPE T,RET             ;NO, IF STAYING WITH EXEC SYMS, NO RE-INIT
1884:         PUSHJ P,COPSYM          ;SETUP SYMBOLS!!!
1885:         JRST DDTB               ;FIXUP SYMS!
1886: >;IFN UEDDTS
1887: 
1888: TEXO:   MOVEI R,TEXTT-HLFW      ;$T ASSUME 7 BIT ASCII
1889:         MOVE T,WRD2
1890:         CAIN T,6                ;CHECK FOR $6T
1891:         MOVEI R,SIXBP-HLFW      ;SET MODE SWITCH FOR SIXBIT
1892:         CAIN T,5                ;CHECK FOR $5T
1893:         MOVEI R,R50PNT-HLFW     ;SET MODE SWITCH FOR RADIX 50
1894:         CAIN T,11               ;CHECK FOR $9T
1895:         MOVEI R,TEXTT9-HLFW     ;SET MODE SWITCH FOR 9 BIT ASCII
1896: HWRDS:  ADDI R,HLFW-TFLOT               ;H
1897: SFLOT:  ADDI R,TFLOT-PIN                ;F
1898: SYMBOL: ADDI R,PIN-TOCC         ;S
1899: CON:    ADDI R,TOCC-FTOC                ;C
1900: UCON:   ADDI R,FTOC             ;U
1901:         HRRZ SCH,R
1902:         JRST BASE1
1903: 
1904: RELA:   TRZE F,Q2F              ;CHANGE ADDRESS MODE TO RELATIE
1905:         JRST BASECH
1906:         MOVEI R,PADSO-TOC
1907: ABSA:   ADDI R,TOC              ;A
1908:         HRRZ AR,R
1909:         JRST BASE1
1910: 
1911: BASECH: MOVE T,WRD2             ;$NR  CHANGE OUTPUT RADIX TO N, N>1
1912:         CAIGE T,2
1913:         JRST ERR
1914:         HRRZ ODF,T
1915: BASE1:  MOVS S,[XWD SCHM,SCH]
1916:         TLNN F,CCF
1917:         JRST LIS1
1918:         BLT S,ODFM      ;WITH $$, MAKE MODES PERMANENT
1919:         JRST RET
1920: 
1921: SEMIC:  MOVEM T,LWT             ;SEMICOLON TYPES IN CURRENT MODE
1922:         JRST (SCH)
    DDT page# 0034 next  prev
1924: ;GO AND EXECUTE LOGIC
1925: 
1926: STR:
1927: GO:     HRLI T,254000             ;G
1928:         TLOE F,QF
1929:         JRST XEC0
1930:         IFN EDDT&1,<    SKIPE T,STARTA> ;LOAD TAPE START ADDRESS
1931:         IFE EDDT&1,<    HRR T,JOBSA>    ;GET STARTING ADDRESS
1932: 
1933: XEC:    TLNN F,QF               ;X
1934:         JRST ERR
1935:         JRST XEC0               ;RETCH!!!
1936: 
1937: BREAKA: PUSHJ P,REMOVB          ;REMOVE BREAKPOINTS
1938: BREAKB: PUSHJ P,CHKSYM  ;RESET PRGM AND BLOCK IF SYMBOLS MOVED
1939:         SOS T,BCOM3
1940:         HRRZS T                 ;GET ADDR OF BREAKPOINT JUST HIT
1941:         SUBI T,B1ADR-4
1942:         IDIVI T,4
1943:         HRRM T,BREAK2   ;WE WANT IT LATER
1944:         MOVE W1,BRKNAM-1(T)     ;GET THE RIGHT JUNK
1945:         PUSHJ P,TEXT2           ;AND PRINT
1946:                 ;<<<<<<< THESE BALANCE THE >'S IN THE NEXT FEW LINES
1947:         MOVSI W1,(<ASCIZ />/>)          ;TYPE > FOR COND BREAK
1948:         SKIPG @BCOM2            ;TEST PROCEED COUNTER
1949:         MOVSI W1,(<ASCIZ />>/>) ;TYPE >> FOR PROCEED COUNTER BREAK
1950:         PUSHJ P,TEXT2
1951:         MOVE T,BCOM
1952:         HLLM T, SAVPI           ;SAVE PROCESSOR FLAGS
1953:         MOVEI T,-1(T)
1954:         PUSHJ P,PAD             ;TYPE PC AT BREAK
1955:         HRRZ T,@BCOM3
1956:         HRRM T,PROC0            ;SETUP ADDRESS OF BREAK
1957:         HLRZ T,@BCOM3
1958:         JUMPE T,BREAK1          ;TEST FOR REGISTER TO EXAMINE
1959:         PUSHJ P,LCT             ;PRINT TAB
1960:         HLRZ T,@BCOM3
1961:         PUSHJ P,LI1             ;EXAMINE REGISTER C($NB)LEFT
1962: BREAK1: MOVSI S,400000
1963: BREAK2: ROT S,0 ;WILL BE MODIFIED WITH BREAK NUM
1964:         PUSHJ P,LISTEN          ;DONT PROCEED IF TTY KEY HIT
1965:         TDNN S,AUTOPI           ;DONT PROCEED IF NOT AUTOMATIC
1966:         JRST RETB               ;DONT PROCEED
1967:         MOVEI T,2       ;COMPENSATE FOR SOS
1968:         ADDB T,@BCOM2
1969:         JUMPL T,PROCD1  ;GO IF STILL LESS THAN
1970:         ANDCAM S,AUTOPI ;TURN OFF AUTOPI
1971:         JRST RETB       ;AND BREAK
1972: 
1973: RADIX =10
1974: BRKNAM: FOR @% I←1,NBP
1975: <       ASCII /$%I%B/
1976: >
1977: RADIX =8
1978: 
1979: PROCEDE: TLNE F,QF              ;N$P    ;PROCEED AT A BREAKPOINT
1980:         JRST PROC3
1981:         MOVEI T,1
1982:         TLNE F,CCF      ;IF $$P
1983:         MOVSI T,200000  ;THEN VERY LARGE COUNT
1984: PROC3:  TLNE F,CCF      ;IF AUTOPROC
1985:         MOVNS T         ;NEGATE
1986:         MOVEM T,@BCOM2
1987:         HRRZ R,BCOM3
1988:         PUSHJ P,AUTOP
1989: PROCD1: PUSHJ P,CRF
1990:         PUSHJ P,TTYLEV
1991: PROC0:  HRRZI R,XEC1            ;MODIFIED TO ADDR OF BREAKPOINT
1992:         PUSHJ P,FETCH
1993:         JRST BPLUP1             ;ONLY GET HERE IF MEMORY SHRANK
1994:         MOVEM T,LEAV
1995:         PUSHJ P,INSRTB
1996:         JRST PROC2
1997: 
1998: PROC2:  MOVEI W,100
1999:         MOVEM W,TEM1            ;SETUP MAX LOOP COUNT
2000:         JRST IXCT5
    DDT page# 0035 next  prev
2002: IXCT4:  IFE EDDT&1,<    SUBI T,041
2003:         JUMPE T,IINIT
2004:         AOJGE T,IXCT6>                          ;DONT PROCEDE FOR INIT
2005:                                 ;DONT INTERPRET FOR SYSTEM UUOS
2006:         MOVEM R,40              ;INTERPRET FOR NON-SYSTEM UUOS
2007:         MOVEI R,41
2008: IXCT:   SOSL TEM1
2009:         PUSHJ P,FETCH
2010:         JRST BPLUP              ;BREAKPOINT LOOPING OR FETCH FAILED
2011:         MOVEM T,LEAV
2012: IXCT5:  IFN EDDT&1,<
2013:         LDB T,[POINT 9,LEAV,8]  ;GET INSTRUCTION
2014:         CAIN T,254              ;DON'T DO ANYTHING TO JRST IN EXEC MODE
2015:         JRST IXCT6>
2016:         HRLZI 17,AC0
2017:         BLT 17,17
2018:         MOVEI T,@LEAV
2019:         DPB T,[POINT 23,LEAV,35]        ;STORE EFFECTIVE ADDRESS
2020:         LDB W1,[POINT 4,LEAV,12]        ;PICK UP AC FIELD
2021:         LDB T,[POINT 9,LEAV,8]          ;PICK UP INSTRUCTION FIELD
2022:         MOVEI P,PS
2023:         CAIN T,260
2024:         JRST  IPUSHJ            ;INTERPRET PUSHJ
2025: 
2026:         CAIN T,264
2027:         JRST IJSR               ;INTERPRET JSR
2028:         CAIN T,265
2029:         JRST IJSP               ;INTERPRET JSP
2030:         CAIN T,266
2031:         JRST IJSA               ;INTERPRET JSA
2032:         MOVE R,LEAV
2033:         TRNN T,700
2034:         JRST IXCT4              ;INTERPRET UUO
2035:         CAIN T,256
2036:         JRST IXCT               ;INTERPRET XCT
2037: 
2038: IXCT6:  MOVE W,LEAV     ;FOR RESTORE TO XCT
2039:         MOVEI T,@BCOM   ;GET RETURN ADR
2040:         JRST RESTORE
2041: 
2042: 
2043: BPLUP:  PUSHJ P,REMOVB          ;BREAKPOINT PROCEED ERROR
2044: BPLUP1: JSR SAVE
2045:         JFCL
2046:         JRST ERR
2047: 
2048: IFE EDDT&1,<IINIT:      MOVE T,LEAV
2049:         MOVEM T,INITL   ;SET UP TO DO THE INIT HERE
2050:         MOVEI R,@BCOM   ;THE LOC OF INIT+1
2051:         PUSHJ P,FETCH
2052:         JRST BPLUP
2053:         MOVEM T,INITL+1
2054:         ADDI R,1
2055:         PUSHJ P,FETCH
2056:         JRST BPLUP
2057:         MOVEM T,INITL+2
2058:         MOVEI T,2
2059:         ADDM T,BCOM     ;INCREMENT RETURN ADR
2060: INITL:  0
2061:         0
2062:         0
2063:         SKIPA
2064:         AOS BCOM
2065:         MOVEI T,@BCOM   ;GET RETURN ADR
2066:         JRST IJSR4      ;AND MAKE LIKE A JSR>
    DDT page# 0036 next  prev
2068: IPUSHJ: DPB W1,[POINT 4,CPUSHP,12]      ;STORE AC FIELD INTO A PUSH
2069:         SETZM TEM3
2070:         MOVE W,CPUSHP           ;GET A PUSH INSTR
2071:         MOVE T,LEAV
2072:         JRST RESTR1
2073: 
2074: CPUSHP: PUSH
2075: 
2076: IJSA:   MOVE T,BCOM             ;INTERPRET JSA
2077:         HRL T,LEAV
2078:         EXCH T,AC0(W1)
2079:         JRST IJSR2
2080: 
2081: IJSR:   MOVE T,BCOM             ;INTERPRET JSR
2082:         HLL T,SAVPI
2083: IJSR2:  MOVE R,LEAV
2084:         PUSHJ P,DEP
2085:         AOSA T,LEAV
2086: IJSR3:  MOVE T,LEAV
2087: IJSR4:  MOVSI W,(<JFCL>)
2088:         JRST RESTORE
2089: 
2090: IJSP:   MOVE W,BCOM             ;INTERPRET JSP
2091:         HLL T,SAVPI
2092:         MOVEM W,AC0(W1)
2093:         JRST IJSR3
2094: 
2095: ;INSERT BREAKPOINTS
2096: 
2097: INSRTB: MOVE S,[JSR BP1]
2098: INSRT1: SKIPE R,B1ADR-BP1(S)
2099:         PUSHJ P,FETCH
2100:         JRST INSRT3
2101:         MOVEM T,B1INS-BP1(S)
2102:         MOVE T,S
2103:         PUSHJ P,DEP
2104: INSRT3:      ADDI S,4
2105:         CAMG S,[JSR BPN]
2106:         JRST INSRT1
2107:         POPJ P,
2108: 
2109: ;REMOVE BREAKPOINTS
2110: 
2111: REMOVB: MOVEI S,BNADR
2112: REMOV1: MOVE T,B1INS-B1ADR(S)
2113:         SKIPE R,(S)
2114:         PUSHJ P,DEP
2115:         SUBI S,4
2116:         CAIL S,B1ADR
2117:         JRST REMOV1
2118:         IFN EDDT&1,<JRST TTYRET>
2119:         IFE EDDT&1,<POPJ P,>
2120: 
2121: ;IN EXEC MODE, SAVE UP TTY STATUS
2122: ;IN USER MODE, DONE BY SAVE
    DDT page# 0037 next  prev
2124: ;ALL $B COMMANDS OF FORM <A>$<N>B
2125: 
2126: BPS:    TLZE F,QF
2127:         JRST BPS1
2128:         TRZE F,Q2F
2129:         JRST BPS2
2130:         MOVE T,[XWD B1ADR,B1ADR+1]
2131:         SETZM  B1ADR
2132:         BLT T,AUTOPI    ;CLEAR OUT ALL BREAKPOINTS AND AUTO PROCEDE REGESTER
2133:         JRST RET
2134: 
2135: BPS1:   TRZN F,Q2F
2136:         JRST BPS3
2137:         MOVE R,T
2138:         TRO F,2
2139: BPS2:   MOVE T,WRD2
2140:         CAIL T,1
2141:         CAILE T,NBP
2142:         JRST ERR
2143:         IMULI T,4
2144:         ADDI T,B1ADR-4
2145:         TRZN F,ITF
2146:         JRST MASK2
2147:         EXCH R,T
2148:         JRST BPS5
2149: 
2150: BPS3:   MOVEI R,B1ADR           ;PROCESS THE A$B
2151: BPS4:   HRRZ W,(R)
2152:         CAIE W,(T)
2153:         SKIPN (R)
2154:         JRST BPS5
2155:         ADDI R,4
2156:         CAIG R,BNADR
2157:         JRST BPS4
2158:         JRST ERR
2159: BPS5:   MOVEM T,(R)
2160:         SETZM 1(R)
2161:         SETZM 2(R)
2162:         SETZM 3(R)
2163: IFN EDDT&20,<
2164:   CONSO APR,MAOFF         ;WHICH INST SHALL WE USE?
2165:         SKIPA S,[CONSZ APR,MAOFF]
2166:         MOVE S,[CONSO APR,MAOFF]
2167:         MOVEM S,B1SKP-B1ADR(R)  ;MAKE BREAK POINTS CONDITIONAL!
2168: >
2169: AUTOP:  SUBI R,B1ADR            ;AOUT PROCEED SETUP
2170:         IDIVI R,4
2171:         MOVEI S,1
2172:         LSH S,(R)
2173:         ANDCAM S,AUTOPI
2174:         TLNE F,CCF
2175:         IORM S,AUTOPI
2176:         POPJ P,
2177: 
    DDT page# 0038 next  prev
2179: ;FETCH AND DEPOSIT INTO MEMORY
2180: 
2181: 
2182: DEPRS:  MOVEM T,LWT             ;DEPOSIT REGISTER AND SAVE AS LWT
2183:         MOVE R,LLOCO    ;QUAN TYPED IN REGIS EXAM
2184:         TLZE F,ROF
2185:         TLNN F,QF
2186:         POPJ P,0
2187: DEP:    TRNN R,777760
2188:         JRST DEP1
2189: IFE UEDDTS,<IFE EDDT&1,<
2190:         TRNE R,400000
2191:         SKIPA W,JOBHRL
2192:         MOVE W,JOBREL
2193:         HRRZS W         >
2194: IFN EDDT&1,<
2195:         IFN FTDSWP,<
2196:                 PUSHJ P,SWPDEP
2197:                 POPJ P,         ;DEPOSIT DONE, OR LOST!
2198:         >
2199:         HRRZ W,JOBREL>
2200:         CAILE W,(R)
2201:         MOVEM T,0(R)>
2202: 
2203: IFN UEDDTS,<
2204:         SKIPE   EXJOBN          ;EX-DEP IN JOB??
2205:         POPJ    P,              ;YES, LOSE
2206:         CAMG    R,MEMSIZ        ;ADDRESS IN BOUNDS?
2207:         SKIPN   SPCFLG          ;YES. HAS PROGRAM BEEN REENTERED?
2208:         JRST [  OUTSTR[ASCIZ/DEPOSIT NOT ENABLED!
2209: /]
2210:                 POPJ P,]        ;ILLEGAL ADDRESS OR NOT REENTERED,
2211:         MOVEM   T,SPCWRD        ;SAVE DATA FOR SPACEWAR
2212:         MOVEM   R,SPCADR        ;SAVE ADDRESS FOR SPACEWAR
2213:         PUSHJ P,LOGIT           ;LOG INTO UEDDT.LOG
2214:         SPCWAR  0,DDTSPC        ;ZERO TIC'S WILL DO
2215:         SKIPE   SPCADR          ;WAIT FOR SPACEWAR
2216:         JRST    .-1
2217: >
2218:         POPJ P,0
2219: 
2220: DEP1:   MOVEM T,AC0(R)
2221:         POPJ P,0
2222: 
2223: FETCH:
2224: IFE UEDDTS,<
2225: IFE EDDT&1,<
2226:         TRNE R,400000
2227:         SKIPA T,JOBHRL
2228:         MOVE T,JOBREL
2229:         HRRZS T
2230: >;IFE EDDT&1
2231: IFN EDDT&1,<
2232: IFN FTDSWP,<
2233:         PUSHJ P,SWPEXM
2234:         JRST CPOPJ1             ;EXAMINE DONE, OR LOST
2235:         JRST CPOPJ1             ;DISK REF FAILED!
2236: >;IFN FTDSWP
2237:         HRRZ T,JOBREL
2238: >;IFN EDDT&1
2239:         CAIGE T,(R)
2240:         POPJ P,
2241:         TRNN R,777760
2242:         SKIPA T,AC0(R)
2243:         MOVE T,(R)
2244:         JRST CPOPJ1
2245: >;IFE UEDDTS
2246: 
2247: IFN UEDDTS,<
2248:         SKIPE EXJOBN            ;EXAMINING JOB?
2249:         JRST JEXM               ;YES, DO IT!
2250:         MOVEI T,@PROFF
2251:         CAMLE T,PRMAX
2252:         JRST [  HRRZ T,R
2253:                 CAMLE T,MEMSIZ
2254:                 POPJ P,
2255:                 PUSHJ P,PRSET
2256:                 JRST FETCH]
2257:         MOVE T,400000(T)
2258:         JRST CPOPJ1
2259: 
2260: JEXM:   TRNE R,777760           ;AC?
2261:         JRST JEXM1
2262:         MOVE T,[-1,,JOBPC↑]     ;GET PC WORD
2263:         MOVEM T,EXJOBN+1
2264:         MOVEI T,EXJOBN
2265:         JOBRD T,
2266:         POPJ P,                 ;LOSE
2267:         MOVE T,EXJWRD           ;GET LOSERS PC
2268:         TLNE T,10000            ;USRMOD?
2269:         ADDI R,20               ;YES, AC'S ARE REALLY HERE
2270: JEXM1:  HRRM R,EXJOBN+1
2271:         MOVNI T,1
2272:         HRLM T,EXJOBN+1         ;IN CASE WE HAD AN ERROR PREVIOUSLY
2273:         MOVEI T,EXJOBN
2274:         JOBRD T,                ;EXAMINE LOSER CORE
2275:         POPJ P,                 ;LOSE
2276:         MOVE T,EXJWRD
2277:         JRST CPOPJ1
2278: >;IFN UEDDTS
    DDT page# 0039 next  prev
2280: FIRARG: MOVEM T,DEFV
2281:         TLO F,FAF
2282:         JRST ULIM1
2283: ULIM:   TLO F,SAF
2284:         HRRZM T,ULIMIT
2285: ULIM1:  TLNN F,QF
2286:         JRST ERR
2287:         JRST LIS0
2288: 
2289: 
2290: REPEAT 0,<LOOK: SKIPL R,PRGM    ;LOOK UP SYMBOL
2291:         MOVE R,@SYMP
2292:         HLRE S,@SYMP
2293:         ASH S,-1        ;SETUP COUNT FOR LENGTH OF SYM TABLE
2294:         TLZ F,400000
2295:         HRLZI W2,DELO+DELI
2296:         MOVEM T,TEMDDT
2297: 
2298: LOOK1:  TDNE W2,(R)
2299:         JRST LOOK3
2300:         MOVE T,(R)
2301:         TLNN T,PNAME    ;NAME
2302:         TLOA W2,LOCAL
2303:         SKIPA T,TEMDDT
2304:         JRST LOOK3
2305:         MOVE W,1(R)
2306:         XOR W,T
2307:         JUMPL W,LOOK3
2308:         SUB T,1(R)
2309:         JUMPL T,LOOK3
2310:         JUMPGE F,LOOK2
2311:         MOVE W,1(R)
2312:         SUB W,1(W1)
2313:         JUMPLE W,LOOK3
2314: LOOK2:  HRR W1,R                ;POINTER BEST VALUE SO FAR
2315:         TLO F,400000
2316:         JUMPE T,SPT0
2317: LOOK3:  ADD R,[XWD 2,2]
2318:         SKIPL R
2319:         MOVE R, @SYMP
2320:         AOJLE S,LOOK1   ;TERMINATING CONDITION
2321:         MOVE T,TEMDDT
2322:         TLNE F,400000
2323:         SUB T,1(W1)
2324:         JRST CPOPJ1>
2325: LOOK:   SETZM SVFB
2326:         SETZM SVTB
2327:         SETZM BLVL
2328:         SYMTST
2329:         HLRE S,@SYMP
2330:         ASH S,-1
2331:         TLZ F,600000
2332:         MOVEM F,SVF
2333:         HRLZI W2,DELO+DELI
2334:         MOVEM T,TEMDDT
2335:         SKIPL R,PRGM
2336:         JRST TOPDWD
2337: LOOK1:  SUB R,[XWD 2,2]
2338:         TDNE W2,(R)
2339:         JRST LOOK3
2340:         LDB T,[POINT 4,(R),3]
2341:         CAIN T,3
2342:         JRST BLNME
2343:         JUMPE T,PNAM
2344:         MOVE T,TEMDDT
2345:         MOVE W,1(R)
2346:         XOR W,T
2347:         JUMPL W,LOOK3
2348:         SUB T,1(R)
2349:         JUMPL T,LOOK3
2350:         JUMPGE F,LOOK2
2351:         MOVE W,1(R)
2352:         SUB W,1(W1)
2353:         JUMPLE W,LOOK3
2354: LOOK2:  HRR W1,R
2355:         TLO F,400000
2356:         TLNE F,200000
2357:         JRST LOOK2A
2358:         MOVE W,SVTB
2359:         MOVEM W,SVFB
2360: LOOK2A: TLNE W2,LOCAL
2361:         SETZM SVFB
2362:         JUMPE T,LOOK4
2363: LOOK3:  CAMN R,@SYMP
2364:         JRST TOPDWN
2365: LOOK3A: AOJLE S,LOOK1
2366:         MOVE T,TEMDDT
2367:         TLNE F,400000
2368:         SUB T,1(W1)
2369:         JUMPE T,SPT0
2370:         JRST CPOPJ1
2371: 
2372: TOPDWD: TLO W2,LOCAL
2373: TOPDWN: HLRE R,@SYMP
2374:         MOVNS R
2375:         ADD R,@SYMP
2376:         JRST LOOK3A
2377: 
2378: BLNME:  MOVEM R,SVTB
2379:         MOVE T,1(R)
2380:         CAMN R,BLOCK
2381:         JRST BLNM1
2382:         CAML T,BLVL
2383:         JRST BLNM2
2384: BLNM1:  MOVEM T,BLVL
2385:         TLNE F,200000
2386:         JRST LOOK3
2387:         EXCH F,SVF
2388:         EXCH W1,SW1
2389:         TLO F,200000
2390:         JRST LOOK3
2391: 
2392: BLNM2:  TLNN F,200000
2393:         JRST LOOK3
2394: PNAM1:  EXCH F,SVF
2395:         EXCH W1,SW1
2396:         JRST LOOK3
2397: 
2398: PNAM:   TLO W2,LOCAL
2399:         TLNN F,200000
2400:         JRST LOOK3
2401:         JUMPGE F,LOOK5
2402:         MOVE F,SVF
2403:         JUMPGE F,PNAM2
2404:         MOVE T,1(W1)
2405:         EXCH W1,SW1
2406:         CAMGE T,1(W1)
2407:         JRST LOOK5A
2408:         MOVE W1,SW1
2409: PNAM2:  SETZM SVFB
2410:         TLO F,400000
2411:         TLZ F,200000
2412:         JRST LOOK3
2413: 
2414: LOOK4:  TLZN F,200000
2415:         JRST LOOK3
2416:         SETZM SVFB
2417:         JRST SPT0
2418: 
2419: LOOK5:  EXCH F,SVF
2420:         EXCH W1,SW1
2421: LOOK5A: MOVE T,1(W1)
2422:         CAMN T,TEMDDT
2423:         JRST SPT0
2424:         JRST LOOK3
    DDT page# 0040 next  prev
2426: CONSYM: MOVEM T,LWT
2427:         TRNN F,LF1
2428:         JRST (SCH)              ;PIN OR FTOC
2429:         TRNE F,CF1
2430:         JRST  FTOC
2431: 
2432: LFPIN:  JFCL
2433: RFPIN:  JFCL            ;FOR L AND V MODES (JUST SO THEY ARE NOT PIN)
2434: PIN:                            ;PRINT INSTRUCTION
2435:         TLC T,700000
2436:         TLCN T,700000
2437:         JRST INOUT              ;IN-OUT INSTRUCTION OR NEG NUM
2438:         AND T,[XWD 777000,0]
2439:         JUMPE T,HLFW
2440:         PUSHJ P,OPTYPE
2441: PIN1:   MOVSI   T,777000
2442:         AND     T,LWT
2443:         TRNN F,ITF              ;HAS INSTRUCTION BEEN TYPED?
2444:         PUSHJ P,LOOK            ;NO, LOOK IN SYMBOL TABLE
2445:         TROA F,NAF              ;INSTRUCTION TYPED, ALOOW NEG ADDRESSES
2446:         JRST HLFW               ;NOT FOUND, OUTPUT AS HALFWORDS
2447:         PUSHJ P,TSPC
2448:         LDB T,[XWD 270400,LWT]  ;GET AC FIELD
2449:         JUMPE T,PI4
2450:         PUSHJ P,PAD
2451: PI3A:  MOVEI W1,","
2452:         PUSHJ P,TEXT
2453: PI4:    MOVE W1,LWT
2454:         MOVEI T,"@"
2455:         TLNE W1,20              ;CHECK FOR INDIRECT BIT
2456:         PUSHJ P,TOUT
2457:         HRRZ T,LWT
2458:         LDB W,[XWD 331100,LWT]  ;INSTRUCTION BITS
2459:         CAIL W,240
2460:         CAILE W,247
2461:         JRST PI8
2462:         TLNN W1,20      ;INDIRECT
2463:         CAIN W,<JFFO>-33
2464:         JRST PI8        ;AND JFFO GET SYMBOLIC
2465:         PUSHJ P,PADS3A
2466: PI7:    TRZ F,NAF       
2467:         LDB R,[XWD 220400,LWT]  ;INDEX REGISTER CHECK
2468:         JUMPE R,PADS1           ;EXIT
2469:         MOVEI T,"("
2470:         PUSHJ P,TOUT
2471:         MOVE T,R
2472:         PUSHJ P,PAD
2473:         MOVEI T,")"
2474:         JRST TOUT               ;EXIT
2475: 
2476: PI8:    CAIN SCH,LFPIN  ;IN ONE OF THE SPECIAL MODES?
2477:         JRST LFFLG
2478:         CAIN SCH,RFPIN
2479:         JRST RFFLG
2480: PI8A:   PUSHJ P,PAD
2481:         JRST PI7
2482: 
    DDT page# 0041 next  prev
2484: HLFW:   ;PRINT AS HALF WORDS
2485:         HLRZ T,LWT
2486:         JUMPE T,HLFW1
2487:         TRO F,NAF       ;ALLOW NEGATIVE
2488:         PUSHJ P,PAD
2489:         MOVSI W1,(<ASCII /,,/>)
2490:         PUSHJ P,TEXT2
2491: HLFW1:  HRRZ T,LWT
2492: 
2493: PAD:    ;PRINT ADDRESS
2494:         JRST (AR)               ;PADSO OR PAD1
2495: PADSO:  JUMPE T,TOC2+1
2496:         PUSHJ P,LOOK
2497: PADS1:  POPJ P,0
2498:         MOVE W2,1(W1)
2499:         CAMGE T,MXINC
2500:         CAIGE W2,60
2501:         JRST PADS3
2502:         MOVEM T,TEMDDT
2503:         JUMPGE F,PAD1
2504:         PUSHJ P,SPT0
2505:         MOVEI T,"+"
2506: PADS1A: PUSHJ P,TOUT
2507:         HRRZ T,TEMDDT
2508: PAD1:   JRST TOC                ;EXIT
2509: 
2510: PADS3:  MOVE T,TEMDDT
2511: PADS3A: TRNE F,NAF
2512:         CAIGE T,776000
2513:         JRST TOC
2514: PADS3B: CAMN T,[-1,,0]
2515:         JRST PADS3C             ;SPECIAL CASE THAT PRINTS WRONG
2516:         MOVNM T,TEMDDT
2517:         MOVEI T,"-"
2518:         JRST PADS1A
2519: 
2520: PADS3C: MOVEI T,"-"
2521:         PUSHJ P,TOUT
2522:         MOVSI T,1
2523:         JRST TOC
2524: 
2525: INOUT:  TLC T,-1        ;IS IT PERHAPS NEGATIVE
2526:         TLCN T,-1
2527:         JRST PADS3B
2528:         TLC T,777000
2529:         TLCN T,777000   ;THIS IS ALMOST AS GOOD
2530:         JRST HLFW       ;PRINT AS A HALF WORD
2531:         MOVSI R,-IOTLG  ;GET LENGTH OF IOT DEVICE TABLE
2532:         LDB W2,[POINT 7,T,9]    ;GET DEVICE NUMBER
2533:         LSH W2,2
2534: CKIOT:  CAMN W2,IOTBL(R)        ;THERE?
2535:         JRST ISIOT      ;YES
2536:         AOBJN R,CKIOT
2537:         JRST PIN1       ;PRINT AS AN INSTRUCTION
2538: ISIOT:  LDB R,[POINT 3,T,12]
2539:         DPB R,[POINT 6,T,8]     ;MOVE IO BITS OVER FOR OP DECODER
2540:         PUSHJ P,OPTYPE
2541:         PUSHJ P,TSPC
2542:         LDB T,[POINT 7,LWT,9]
2543:         JUMPE T,INOU1
2544:         LSH T,2
2545: IFN EDDT&1!UEDDTS,<     MOVSI W1,-IOTB2L        ;GET NAME TABLE LENGTH
2546: IOTLK:  MOVE W,IOTB2(W1)        ;GET NAME AND NUMBER
2547:         ANDI W,177      ;MASK FOR NUMBER
2548:         LSH W,2         ;SHIFT DEVICE NUMBER BACK TO COMPARE
2549:         CAMN T,W
2550:         JRST IOTFD      ;GOODY WE FOUND THE NUMBER
2551:         AOBJN W1,IOTLK  ;GO LOOK SOME MORE>
2552:         PUSHJ P,LOOK            ;LOOK FOR DEVICE NUMBER
2553:         JRST PI3A
2554:         MOVE T,TEMDDT
2555:         PUSHJ P,TOC
2556:         JRST PI3A
2557: IFE EDDT&1!UEDDTS,<INOU1:       JRST PI4>
2558: IFN EDDT&1!UEDDTS,<IOTFD:       MOVE W1,IOTB2(W1)       ;GET NAME AND NUMBER
2559:         TRZA W1,177     ;MASK OUT NUMBER AND PRINT
2560: INOU1:  MOVE W1,[ASCII /APR/]
2561:         PUSHJ P,TEXT2
2562:         JRST PI3A
2563: 
2564: DEFINE XQ (A,B)
2565: <<ASCII /A/>!<B-2>
2566: >
2567: IOTB2:
2568: DEVICES
2569: IOTB2L←.-IOTB2>
    DDT page# 0042 next  prev
2571: MASK:   TLNE F,QF
2572:         JRST MASK1
2573:         MOVEI T,MSK
2574: MASK2:  MOVEI W,1
2575:         MOVEM W,FRASE1
2576:         JRST QUAN1
2577: MASK1:  MOVEM T,MSK
2578:         JRST RET
2579: 
2580: EFFEC:  TLO F,LTF
2581:         HRRZ T,T
2582: WORD:   MOVEI R,322000-326000   ;JUMPE-JUMPN
2583: NWORD:  ADDI R,326000+40*T      ;JUMPN T,
2584:         HRLM R,SEAR2
2585: 
2586:         TLZN F,QF
2587:         JRST ERR
2588:         SETCAM T,WRD
2589:         MOVSI T,FRASE-DENDDT-1          ;PREVENT TYPE OUT OF DDT PARTS
2590:         SETCMM FRASE(T)
2591:         AOBJN T,.-1
2592:         MOVE T,ULIMIT
2593:         TLNE F,SAF
2594:         TLO F,QF
2595:         PUSHJ P,SETUP1
2596:         PUSHJ P,CRF
2597: SEAR1:  PUSHJ P,FETCH
2598:         JRST SEAR2A
2599:         TLNE F,LTF      ;CHECK FOR EFFECTIVE ADDRESS SEARCH
2600:         JRST EFFEC0
2601:         EQV T,WRD
2602:         AND T,MSK
2603: SEAR2:  JUMPE T,SEAR3           ;OR JUMPN T
2604: SEAR2A: PUSHJ P,LISTEN  ;QUIT ON TELETYPE
2605:         CAIA
2606:         JRST SEAR2B
2607:         CAMN R,[-1]     ;LOSING AOBJN WILL SCREW THIS UP!!!!
2608:         JRST SEAR2B     ;END
2609:         AOBJN R,SEAR1
2610:         TLNE R,777777   ;DID IT JUST GET TO 0 OR IS IT LARGER THAN 128K?
2611:         JRST SEAR1      ;BIG SEARCH
2612: SEAR2B: SETCMM LWT
2613:         JRST DD1
    DDT page# 0043 next  prev
2615: SEAR3:  PUSHJ P,FETCH
2616:         JRST ERR
2617:         TLZ F,STF       ;TURN OFF SUPRESS OUTPUT
2618:         MOVEM R,TEM2
2619:         MOVEM R,T
2620:         PUSHJ P,LI1
2621:         PUSHJ P,CRF
2622:         SETCMM LWT
2623:         SETCMM TEMDDT
2624: SEAR4:  MOVE R,TEM2
2625:         JRST  SEAR2A
2626: 
2627: EFFEC0: TLNE F,CCF      ;DOUBLE ALTMODE?
2628:         JRST EFFECR     ;YES, NO @() CHECK -- RPH 5-12-73
2629:         MOVEM R,TEM2
2630:         PUSHJ P,EFFECA
2631:         JRST SEAR4      ;LOST ON EFF ADR CALC
2632:         MOVE R,TEM2
2633: EFFECR: EQV T,WRD
2634:         ANDI T,777777
2635:         JRST SEAR2
2636: EFFECA: MOVEI W,100
2637:         MOVEM W,TEMDDT
2638: EFFEC1: MOVE W,T
2639:         LDB R,[POINT 4,T,17]    ;GET IR FIELD
2640:         JUMPE R,EFFEC2
2641:         HRRZ T,AC0(R)
2642:         ADD T,W
2643: EFFEC2: HRR R,T
2644:         TLNN W,20               ;INDIRECT BIT CHECK
2645:         JRST EFFEC3
2646:         SOSE TEMDDT
2647:         PUSHJ P,FETCH
2648:         POPJ P,         ;ERROR RETURN
2649:         JRST EFFEC1
2650: EFFEC3: HRRZS T         ;HALFWORD ONLY
2651:         JRST CPOPJ1     ;SKIP RETURN
2652: 
    DDT page# 0044 next  prev
2654: SETUP:  TROA F,R20F     ;FOR ZERO ONLY
2655: SETUP1: TRZ F,R20F
2656:         TLNN F,SAF
2657: IFE UEDDTS,<MOVE T,JOBREL>
2658: IFN UEDDTS,{MOVE T,MEMSIZ       ;SYSTEM JOBREL PTR.}
2659:         HLLI    T,
2660:         MOVEM T,ULIMIT
2661: IFE UEDDTS,<CAMLE T,JOBREL>
2662: IFN UEDDTS,{CAMLE T,MEMSIZ}
2663:         JRST ERR
2664:         HRRZ R,DEFV
2665:         TLNN F,FAF
2666:         MOVEI R,0
2667:         CAML R,ULIMIT
2668:         JRST ERR
2669:         MOVEM R,DEFV
2670:         MOVEI W,-1(R)                   ;RPH 3-17-72
2671:         SUB W,ULIMIT
2672:         HRLM W,R
2673:         POPJ P,0
2674: 
2675: ZERO:   TLNN F,CCF
2676:         JRST ERR
2677:         MOVE W2,T
2678:         TLNN F,QF
2679:         MOVEI W2,0
2680:         HRRZ T,ULIMIT
2681:         PUSHJ P,SETUP
2682: ZERO1:  TRNE R,777760
2683:         JRST ZERO2
2684:         MOVEM W2,AC0(R)
2685:         AOBJN R,ZERO1
2686:         JRST DD1
2687: ZERO2:  HRRZ R, R
2688:         CAIGE R,ZLOW
2689:         MOVEI R,ZLOW            ;DON'T ZERO 20-ZLOW
2690:        HRRZ S,T
2691:         CAIL S, DDT
2692:         MOVEI S, DDT 
2693:         CAMLE S,R
2694:         JSP W,ZEROR
2695:         HRRZ R,R
2696:         CAIG R, DDTEND  ; DON'T ZERO OUT
2697:         MOVEI R, DDTEND  ; DDT
2698:         HRRZ S,T
2699:         CAMLE S, R
2700:         JSP W,ZEROR
2701:         JRST DD1
2702: 
2703: ZEROR:  HRL R,R
2704:         MOVEM W2,(R)
2705:         ADDI  R, 1
2706:         BLT R, -1(S)
2707:         JRST (W)
2708: 
    DDT page# 0045 next  prev
2710: TOCC:   TRO F,EQF       ;SET TO REAL NUMERIC MODE
2711: FTOC:
2712: TOC:    HRRZ W1,ODF
2713:         CAIN W1,12
2714:         JRST  TOC4
2715:         TRZE F,EQF
2716:         JRST TOCA
2717:         CAIN W1,10
2718:         TLNN T,-1       ;IF RADIX NOT 10, OR LEFT HALF EMPTY
2719:         JRST TOCA       ;PRINT
2720:         HRRM T,TOCS     ;SAVE RIGHT HALF
2721:         HLRZS T
2722:         PUSHJ P,TOCA    ;PRINT LEFT HALF
2723:         MOVSI W1,(<ASCII /,,/>)
2724:         PUSHJ P,TEXT2
2725: TOCS:   MOVEI T,0       ;MODIFIED TO HAVE RIGHT HALF
2726: TOCA:   LSHC T,-43
2727:         LSH W1,-1               ;W1=T+1
2728: TOC1:   DIVI T,(ODF)
2729:         HRLM W1,0(P)
2730: TOC3:   JUMPE T,TOC2
2731:         PUSHJ P,TOCA
2732: TOC2:   HLRZ T,0(P)
2733:         ADDI T,"0"
2734:         JRST TOUT       ;DOES POPJ TO TOC2 OR EXIT
2735: 
2736: TOC4:   MOVM W1,T
2737:         JUMPGE T,TOC5
2738:         MOVEI T,"-"
2739:         PUSHJ P,TOUT
2740: TOC5:   MOVEI T,0
2741:         PUSHJ P,TOC1
2742: TOC6: MOVEI T,"."
2743:         JRST TOUT
2744: 
2745: SPT0:   HRRZM W1,SPSAV          ;SAVE POINTER TO TYPED SYM
2746: SPT:    ;RADIX 50 SYMBOL PRINT
2747:         MOVE T,SVFB
2748:         JUMPE T,SPT1W
2749:         CAMN T,BLOCK
2750:         JRST SPT1W
2751:         PUSH P,W1
2752:         LDB T,[POINT 32,(T),35]
2753:         PUSHJ P,SPT1
2754:         MOVEI T,"&"
2755:         PUSHJ P,TOUT
2756:         POP P,W1
2757: SPT1W:  LDB T,[POINT 32,(W1),35]        ;GET SYMBOL
2758: SPT1:   IDIVI T,50
2759:         HRLM W1,0(P)
2760:         JUMPE T,SPT2
2761:         PUSHJ P,SPT1
2762: SPT2:   HLRZ T,0(P)
2763:         JUMPE T,CPOPJ           ;FLUSH NULL CHARACTERS
2764:         ADDI T,260-1
2765:         CAILE T,271
2766:         ADDI T,301-272
2767:         CAILE T,332
2768:         SUBI T,334-244
2769:         CAIN T,243
2770: SPT3:   MOVEI T,256
2771:         JRST TOUT
2772: 
2773: SYMD:   MOVEI T,DELO/200000     ;$D ;DELETE LAST SYM & PRINT NEW
2774:      HRRZ R,SPSAV            ;PICK UP POINTER TO LAST SYM
2775:         JUMPE R,ERR
2776:         DPB T,[POINT 2,(R),1]   ;STORE SEMI-DELETE BITS IN SYMBOL
2777:         MOVE T,LWT
2778:         JRST CONSYM             ;PRINT OUT NEXT BEST SYMBOL
2779: 
2780: ;THESE 2 ARE HERE BECAUSE SWAPPING DDT DOESN'T SAVE THE
2781: ;UNDEFINED SYMBOL TABLE!!!!!!!
2782: ESTU:   0
2783: ESTUT:  0
    DDT page# 0046 next  prev
2785: ;FLOATING POINT OUTPUT
2786: 
2787: TFLOT:  MOVE A,T
2788:         JUMPG A, TFLOT1
2789:         JUMPE A,FP1A
2790:         MOVNS A
2791:         MOVEI T,"-"
2792:         PUSHJ P,TOUT
2793:         TLZE A,400000
2794:         JRST FP1A
2795: TFLOT1: 
2796:         TLNN A, 400
2797:         JRST FP7A       ;UNNORMALIZED FLOATING PRINT AS DECIMAL
2798: 
2799: FP1:    MOVEI B,0
2800:         CAMGE A,FT01
2801:         JRST FP4
2802:         CAML A,FT8
2803:         AOJA B,FP4
2804: FP1A:   MOVEI C,0
2805: 
2806: FP3:    MULI A,400
2807:         ASHC B,-243(A)
2808:         MOVE A,B
2809:         SETZM TEM1
2810:         PUSHJ P,FP7
2811:         PUSHJ P,TOC6            ;PRINT DECIMAL POINT
2812:         MOVNI A,10
2813:         ADD A,TEM1
2814:         MOVE W1,C
2815: FP3A:   MOVE T,W1
2816:         MULI T,12
2817:         PUSHJ P,FP7B
2818:         SKIPE W1
2819:         AOJL A,FP3A
2820:         POPJ P,
2821: 
2822: FP4:    MOVNI C,6
2823:         MOVEI W2,0
2824: FP4A:   ASH W2,1
2825:         XCT FCP(B)
2826:         JRST FP4B
2827:         FMPR A,@FCP+1(B)
2828:         IORI W2,1
2829: FP4B: AOJN C,FP4A
2830:         PUSH P,FSGN(B)
2831:         PUSHJ P,FP3
2832:         POP P,W1
2833:         MOVE A,W2
2834:         PUSHJ P,TEXT
    DDT page# 0047 next  prev
2836: FP7:    JUMPE A,FP7A2
2837:         IDIVI A,12
2838:         AOS TEM1
2839:         HRLM B,(P)
2840:         JUMPE A,FP7A1
2841:         PUSHJ P,FP7
2842: FP7A1:  HLRZ T,(P)
2843: FP7B:   ADDI T,260
2844:         JRST TOUT
2845: FP7A:   PUSHJ P,FP7
2846:         MOVEI T,"."
2847:         JRST TOUT       ;PRINT WITH A .
2848: FP7A2:  MOVEI T,"0"
2849:         JRST TOUT
2850: 
2851:         353473426555    ;1.0E32
2852:         266434157116    ;1.0E16
2853: FT8:    233575360400    ;1.0E8
2854:         216470400000    ;1.0E4
2855:         207620000000    ;1.0E2
2856:         204500000000    ;1.0E1
2857: FT:     201400000000    ;1.0E0
2858:         026637304365    ;1.0E-32
2859:         113715126246    ;1.0E-16
2860:         146527461671    ;1.0E-8
2861:         163643334273    ;1.0E-4
2862:         172507534122    ;1.0E-2
2863: FT01:   175631463146    ;1.0E-1
2864: FT0←←FT01+1
2865: 
2866: FCP:    CAMLE A, FT0(C)
2867:         CAMGE A, FT(C)
2868:         XWD C,FT0
2869: 
2870: FSGN:   ASCII .E-.
2871:         ASCII .E+.
2872: 
2873: TEXTT:  MOVE W1,T
2874: TEXT:   TLNN W1,774000          ;LEFT JUSTIFIED UNLESS LEFT CHAR IS NULL
2875:         LSH W1,35
2876: TEXT2:  MOVEI T,0
2877:         LSHC T,7
2878:         CAILE T,04              ;EOT
2879:         PUSHJ P,TOUT
2880:         JUMPN W1,TEXT2
2881:         POPJ P,
2882: 
2883: ;RPH 7-29-72  TYPE OUT TTY INPUT BUFFERS
2884: TEXTT9: MOVE W1,T
2885: TEXTT0: MOVEI T,0
2886:         LSHC T,11
2887:         PUSH P,T
2888:         LSH T,-7
2889:         PUSH P,T
2890:         SKIPA T,["↑"]
2891:         PUSHJ P,TOUT
2892:         SOSL (P)
2893:         JRST .-2
2894:         POP P,(P)
2895:         POP P,T
2896:         ANDI T,177
2897:         SKIPE T
2898:         PUSHJ P,TOUT
2899:         JUMPN W1,TEXTT0
2900:         POPJ P,
    DDT page# 0048 next  prev
2902: IFN EDDT&1&<EDDT>B36,<
2903: 
2904: 
2905: PSR:    TLNN F,ROF
2906:         JRST ERR
2907:         MOVEM T,LWT
2908:         PUSHJ P,DEPRS
2909:         HRRZM R,DEFV            ;R CONTAINS LLOCO
2910:         MOVE T,R
2911:         JRST PUN2
2912: 
2913: PUNCH:  TLC F,FAF+QF
2914:         TLCE F,FAF+QF
2915:         JRST ERR                ;ONE ARGUMENT MISSING
2916: PUN2:   ADDI T,1
2917:         HRRZM T,TEM1
2918:         SUB T,DEFV
2919:         JUMPLE T,ERR
2920: 
2921: PUN1:   MOVEI T,10
2922:         PUSHJ P,FEED
2923:         HRRZ R,DEFV
2924:         IORI R,37
2925:         ADDI R,1
2926:         CAMLE R,TEM1
2927:         MOVE R,TEM1
2928:         EXCH R,DEFV
2929:         MOVE T,R
2930:         SUB T,DEFV
2931:         HRL R,T
2932:         JUMPGE R,RET            ;EXIT OR PUNCH
2933: 
2934: PBLK:   MOVE T,R
2935:         SOS W,T
2936:         PUSHJ P,PWRD
2937: PBLK1:  PUSHJ P,FETCH
2938:         JRST ERR
2939:         ADD W,T
2940:         PUSHJ P,PWRD
2941:         AOBJN R,PBLK1
2942:         MOVE T,W
2943:         PUSHJ P,PWRD
2944:         JRST PUN1
2945: 
2946: >
    DDT page# 0049 next  prev
2948: IFN EDDT&1&<EDDT>B36,<
2949: 
2950: 
2951: LOADER: TLNE F,QF
2952:         JRST ERR
2953:         MOVEI T,400
2954:         PUSHJ P,FEED
2955:         MOVE R,LOADE
2956: LOAD1:  MOVE T,0(R)
2957:         PUSHJ P,PWRD
2958:         AOBJN R,LOAD1
2959:         MOVEI T,100
2960: LOAD2:  PUSHJ P,FEED
2961:         JRST RET
2962: 
2963: BLKEND: TLNN F,QF               ;BLOCK END
2964:         MOVE T,[JRST 4,DDT]
2965:         TLO T,254000            ;JRST
2966:         PUSH P,T
2967:         MOVEI T,100
2968:         PUSHJ P,FEED
2969:         POP P,T
2970:         PUSHJ P,PWRD
2971:         PUSHJ P,PWRD    ;EXTRA WORD FOR READER TO STOP ON
2972:         MOVEI T,500
2973:         JRST LOAD2
2974: 
2975: PWRD:   MOVEI W1,6
2976: PWRD2:  ROT T,6
2977:         CONSZ PTPP,20
2978:         JRST .-1
2979:         CONO PTPP,50
2980:         DATAO PTPP,T
2981:         SOJG W1,PWRD2
2982:         POPJ P,0
2983: 
2984: FEED:   CONSZ PTPP,20
2985:         JRST .-1
2986:         CONO PTPP,10
2987:         DATAO PTPP,FEED1
2988:         SOJN T,FEED
2989: FEED1:  POPJ P,0
2990: 
2991: >
    DDT page# 0050 next  prev
2993: IFN EDDT&1&<EDDT>B36,<
2994: 
2995: 
2996: VERIFY: TLO F,LTF
2997: CORE:   PUSHJ P,SETUP1          ;LOAD TAPES INTO CORE
2998:         CONO PTRR,60
2999: CORE1:  CONSO PTRR,10
3000:         JRST .-1
3001:         DATAI PTRR,T
3002:         CAME T,LOADE-1          ;JRST 1
3003:         JRST CORE1
3004:         PUSHJ P,CRF
3005:         PUSHJ P,BLOCKQ
3006: 
3007: CORE2:  PUSHJ P,GETW
3008:         CAML R,DEFV
3009:         CAML R,ULIMIT
3010:         JRST VER3
3011:         TLNE F,LTF
3012:         JRST VER2
3013:         PUSHJ P,DEP
3014:         JRST VER3
3015: 
3016: VER2:   MOVEM T,TEM2
3017:         PUSHJ P,FETCH
3018:         JRST ERR
3019:         MOVEM T,TEM3
3020:         XOR T,TEM2
3021:         AND T,MSK
3022:         JUMPE T,VER3
3023:         PUSH P,S
3024:         PUSH P,R
3025:         HRRZ T,R
3026:         PUSHJ P,PAD
3027:         MOVEI T,257             ;SLASH
3028:         PUSHJ P,TOUT
3029:         PUSHJ P,LCT
3030:         MOVE T,TEM3             ;CORE CONTENTS
3031:         PUSHJ P,CONSYM
3032:         PUSHJ P,LCT
3033:         MOVE T,TEM2             ;TAPE CONTENTS
3034:         PUSHJ P,CONSYM
3035:         PUSHJ P,CRF
3036:         POP P,R
3037:         POP P,S
3038: VER3:   PUSHJ P,LISTEN
3039:         AOJA R,CORE2
3040: RUNEND: PUSHJ P,BLOCKQ
3041:         JRST .-1
3042: 
3043: 
3044: >
    DDT page# 0051 next  prev
3046: IFN EDDT&1&<EDDT>B36,<
3047: 
3048: 
3049: 
3050: GETW:   JUMPL S,GETW1
3051:         PUSHJ P,BLOCKQ
3052: GETW1:  MOVE T,1(S)
3053:         AOBJP S,.+1
3054:         POPJ P,0
3055: 
3056: BLOCKS: CONO PTRR,60            ;READ DATA BLOCKS
3057: BLOCKQ: CONSO PTRR,10
3058:         JRST .-1
3059:         DATAI PTRR,W
3060:         JUMPL W,BLK1
3061:         MOVEM W,STARTA
3062:         CONO PTRR,0             ;TURN OFF READER
3063:         JRST DD1
3064: BLK1:   MOVEM W,W1
3065:         TLC W,777740
3066:         TLCE W,777740
3067:         JRST ERR                ;BLOCK TOO BIG
3068:         ADDI W,1
3069:         HRRZM W,R
3070:         HRRI W,BUFF-1
3071:         MOVEM W,S
3072: BLK2:   CONSO PTRR,10
3073:         JRST .-1
3074:         BLKI PTRR,W
3075:         JRST BLK3
3076:         ADD W1,0(W)
3077:         JRST BLK2
3078: BLK3:   ADD W1,0(W)
3079:         CONSO PTRR,10
3080:         JRST .-1
3081:         DATAI PTRR,W
3082:         CAMN W,W1
3083:         POPJ P,0
3084:         CONO PTRR,0             ;CHECKSUM ERROR
3085:         JRST 4,BLOCKS
3086: 
3087: ;R CONTAINS RIGHT HALF OF FIRST LINE
3088: ;S CONTAINS (-WC,BUFF-1)
3089: 
3090: 
3091: >
    DDT page# 0052 next  prev
3093: IFN EDDT&1&<EDDT>B36,<
3094: 
3095: 
3096: LOADB:  
3097: 
3098: IFE EDDT&10,<
3099: DATAI PTRR,1
3100:         XWD -1,-22
3101: DATAI PTRR,2
3102:         CONSO PTRR,10
3103: DATAI PTRR,3
3104:         JRST 2
3105: MOVE 4,37
3106: HRLI 4,710441                          ;DATAI PTRR,0(1)
3107: DATAI PTRR,5
3108:         AOJN 1,2
3109: DATAI PTRR,6
3110:         JRST -6(4)
3111: JRST 2
3112: 
3113: 
3114: MOVE 0,1
3115: CONSO PTRR,10
3116: JRST -21(4)
3117: DATAI PTRR,0(1)
3118: ROT 0,1
3119: ADD 0,(1)
3120: AOBJN 1,-21(4)
3121: CONSO PTRR,10
3122: JRST -13(4)
3123: DATAI PTRR,1
3124: CAME 1,0
3125: JRST 4,-6(4)
3126: CONSO PTRR,10
3127: JRST -6(4)
3128: DATAI PTRR,1
3129: JUMPL 1,-22(4)
3130: CONO PTRR,0
3131: JRST 1
3132: 
3133: >
3134: IFN EDDT&10,<
3135: PHASE 0         ;RIM10B CHECKSUM LOADER
3136:         XWD -16,0
3137: BEG:    CONO PTRR,60
3138:         HRRI PTRR,10
3139: RD:     CONSO PTRR,10
3140:         JRST .-1
3141:         DATAI PTRR,@TBL1-RD+1(AA)
3142:         XCT TBL1-RD+1(AA)
3143:         XCT TBL2-RD+1(AA)
3144: AA:     SOJA AA,
3145: TBL1:   CAME CKSM,ADR
3146:         ADD CKSM,1(ADR)
3147:         SKIPL CKSM,ADR
3148: TBL2:   JRST 4,BEG
3149:         AOBJN ADR,RD
3150: ADR:    JRST BEG+1
3151: CKSM←←ADR+1
3152: 
3153: DEPHASE
3154: >
3155: LOADE:  XWD LOADB-.,LOADB
3156: >
3157: 
    DDT page# 0053 next  prev
3159: CRN:    MOVEI T,15              ;CARRIAGE RETURN
3160:         JRST TOUT
3161: 
3162: IFE EDDT&1,<
3163: CRNRB:  PUSHJ P,CRN
3164:         MOVEI T,177
3165:         JRST TOUT       >
3166: 
3167: CRF:    PUSHJ P,CRN
3168:         MOVEI T,12              ;LINE FEED
3169:         JRST TOUT
3170: 
3171: LCT:    IFN EDDT&1,<PUSHJ P,TSPC
3172:         PUSHJ P,TSPC>
3173:         IFE EDDT&1,<MOVEI T,11
3174:         JRST TOUT>
3175: 
3176: TSPC:   MOVEI T,40              ;SPACE
3177:         JRST TOUT
3178: 
    DDT page# 0054 next  prev
3180: IFN EDDT&1,<
3181: 
3182: TINSTR: ILDB T,STRING
3183:         JUMPE T,TIN3    ;THERE IS A CHR
3184:         CONSZ TTYY,40
3185:         JRST TIN3
3186:         CAIE T,15
3187:         JRST TIN2
3188:         ILDB T,STRING
3189:         CAIN T,12
3190:         JRST TIN4
3191:         MOVSI T,70000
3192:         ADDM T,STRING
3193: TIN4:   MOVEI T,15
3194:         JRST TIN2
3195: TIN3:   SETZM STRING    ;ZERO AND READ TTY
3196: TIN:    SKIPE STRING
3197:         JRST TINSTR     ;GET IT FROM THE STRING
3198:         PUSHJ P,LISTEN
3199:         JRST .-1
3200: TIN2:   CAIE T,175
3201:         CAIN T,176
3202:         MOVEI T,33      ;CHANGE ALL ALT MODES TO NEW
3203:         CAIN T,177
3204:         JRST WRONG
3205:         TRNE T,140
3206: TOUT:   CAIG T,4
3207:         POPJ P,
3208:         SKIPE OUTRTN
3209:         JRST @OUTRTN
3210: IFN EDDT&1,<
3211:         SKIPE OUTLPT
3212:         JRST LPOUT
3213: >
3214:         HRLM T,(P)
3215:         IMULI T,200401
3216:         AND T,[11111111]
3217:         IMUL T,[11111111]
3218:         HLR T,(P)
3219:         TLNE T,10
3220:         TRC T,200
3221:         CONSZ TTYY,20
3222:         JRST .-1
3223:         DATAO TTYY,T
3224:         ANDI T,177
3225:         POPJ P,0
3226: 
3227: IFN EDDT&1,<
3228: LPOUT:  IDPB T,LPPTR
3229:         SOSLE LPCNT
3230:         POPJ P,
3231:         PUSH P,T
3232:         MOVEI T,5
3233:         MOVEM T,LPCNT
3234:         DATAO LPT,LPWRD
3235:         MOVE T,[POINT 7,LPWRD]
3236:         MOVEM T,LPPTR
3237:         CONSO LPT,100
3238:         JRST .-1
3239:         POP P,T
3240:         POPJ P,
3241: 
3242: LPPTR:  POINT 7,LPWRD
3243: LPWRD:  0
3244: LPCNT:  5
3245: >
3246: 
3247: LISTEN: CONSO TTYY,40   ;LISTEN FOR TTY
3248:         POPJ P,
3249:         DATAI TTYY,T
3250:         ANDI T,177
3251:         JRST CPOPJ1
3252: 
3253: TTYRET: MOVEI  T,3410
3254: TTY1:   MOVEI W2,40000
3255:         CONSZ TTYY,120
3256:         SOJG W2,.-1
3257:         CONI TTYY,SAVTTY
3258:         DATAI TTYY,W2
3259:         HRLM W2,SAVTTY
3260:         CONO TTYY,(T)
3261:         POPJ P,
3262: TTYLEV: MOVE T,SAVTTY
3263:         TRZ T,160
3264:         TRO T,3600
3265:         TRNE T,10
3266:         TRZ T,200
3267:         JRST TTY1
3268: 
3269: TEXIN:  PUSHJ P,TIN
3270:         TRNN T,140
3271:         JRST TOUT
3272:         POPJ P,
3273: 
3274: >
    DDT page# 0055 next  prev
3276: IFE EDDT&1,<
3277: 
3278: TIN:    MOVE T,POUTBF           ;GET NEXT CHARACTER ROUTINE
3279:         CAME T,[POINT 7,INBFF]
3280:         PUSHJ P,FINOUT
3281:         SKIPE STRING
3282:         JRST TINSTR
3283: ;       ILDB T,PINBFF
3284:         INCHRW T                ;RPH 5-22-71
3285:         CAIN T,15
3286:         INCHRW 1(P)             ;THROW THE LF DOWN ON THE STACK
3287: TIN3:   CAIE T,176
3288:         CAIN T,175
3289:         MOVEI T,33      ;CHANGE TO NEW ALT MODE
3290:         CAIN T,177
3291:         JRST WRONG
3292:         JUMPN T,CPOPJ
3293: ;       MOVE T,[POINT 7,INBFF]
3294: ;       MOVEM T,PINBFF
3295: ;       CALL T,[SIXBIT /DDTIN/]
3296: TIN2:   SETZM STRING
3297:         JRST TIN
3298: 
3299: TINSTR: ILDB T,STRING
3300:         JUMPE T,TIN2    ;ALL DONE
3301:         CAIN T,33       ;NOT THIS ONE STUPID
3302:         MOVEI T,"$"     ;DO IS AS $
3303:         SKIPN OUTRTN
3304:         JRST TIN4
3305:         PUSHJ P,@OUTRTN
3306:         JRST TIN3
3307: TIN4:   IDPB T,POUTBF   ;DUPLEX
3308:         JRST TIN3       ;AND EAT
3309: 
3310: TOUT:   JUMPE T,CPOPJ
3311:         SKIPE OUTRTN
3312:         JRST @OUTRTN
3313:         CAIE T,177              ;IS IT THIS GODDAMN CHAR?
3314:         JRST NOTDEL             ;NO
3315:         SETO T,
3316:         TTYUUO 6,T
3317:         TLNE T,526000           ;WILL HE IGNORE A 177?
3318:         POPJ P,                 ;NO, SKIP IT
3319:         MOVEI T,177             ;CHANGE BACK TO 177
3320: NOTDEL: IDPB T,POUTBF
3321:         CAIE T,12
3322:         POPJ P,
3323: TTYLEV:
3324: FINOUT: MOVEI T,0
3325:         IDPB T,POUTBF
3326:         MOVE T,[POINT 7,INBFF]
3327: ;       MOVEM T,PINBFF
3328:         MOVEM T,POUTBF
3329: ;       CALL T,[SIXBIT /DDTOUT/]
3330:         OUTSTR INBFF
3331:         SETZM  INBFF
3332:         POPJ P,
3333: 
3334: ;PINBFF:        POINT 7,INBFF
3335: POUTBF: POINT 7,INBFF
3336: 
3337: IFE UEDDTS,<
3338: LISTEN: INCHRS T
3339:         POPJ P,
3340:         CLRBFI
3341:         JRST CPOPJ1
3342: >;UEDDTS
3343: IFN UEDDTS,<
3344: LISTEN: POPJ P,         ;DON'T WASTE TIME CHECKING TTY
3345: >;UEDDTS        RPH 7-30-72
3346: INBFF:  BLOCK 31
3347: 
3348: TTYRET:
3349:         MOVE T,[POINT 7,INBFF]
3350:         MOVEM T,POUTBF
3351: ;       MOVEM T,PINBFF
3352:         SETZM  INBFF
3353:         POPJ P,
3354: 
3355: 
3356: TEXIN←←TIN
3357: >
    DDT page# 0056 next  prev
3359: BDISP:  POINT 12,DISP(R),11
3360:         POINT 12,DISP(R),23
3361:         POINT 12,DISP(R),35
3362: 
3363: DISP:   
3364: DEFINE D' (Z1,Z2,Z3)<
3365:         (Z1-DDT)*1B11+(Z2-DDT)*1B23+Z3-DDT
3366:         LIST>
3367: 
3368: IFE EDDT&1&<EDDT>B36,<
3369:         PUNCH←←ERR
3370:         BLKEND←←ERR
3371:         LOADER←←ERR
3372:         VERIFY←←ERR
3373:         CORE←←ERR>
3374: 
3375: 
3376: 
3377: D ERR,DARRW,ERR
3378: D ERR,ERR,JOBSET
3379: D ERR,ERR,VARRW
3380: D TAB,LINEF,ERR
3381: D ERR,CARR,ERR
3382: D ERR,ERR,ERR
3383: D PUNCH,ERR,ERR
3384: D ERR,ERR,ERR
3385: D ERR,ERR,ERR
3386: D CONTROL,ERR,LTAB
3387: D ERR,ERR,SPACE
3388: D SUPTYO,TEXI,ASSEM
3389: D DOLLAR,BYTI,SETBLK
3390: D DIVD,LPRN,RPRN
3391: D MULT,PLUS,ACCF
3392: D MINUS,PERIOD,SLASH
3393: D NUM,NUM,NUM
3394: D NUM,NUM,NUM
3395: D NUM,NUM,NUM
3396: D NUM,TAG,SEMIC
3397: D FIRARG,EQUAL,ULIM
3398: D QUESTN,INDIRECT,ABSA
3399: D BPS,CON,SYMD
3400: D EFFEC,SFLOT,STR
3401: D HWRDS,PILOC,FLGMOD
3402: D KILL,LFTT,MASK
3403: D NWORD,BITO,PROCEDE
3404: D QUAN,RELA,SYMBOL
3405: D TEXO,UCON,RFTT
3406: D WORD,XEC,CORE
3407: D ZERO,OCON,ICON
3408: D OSYM,VARRW,PSYM
3409: 
3410: 
    DDT page# 0057 next  prev
3412: FLGOUT: SKIPN R,FLGPNT
3413:         JRST HLFW       ;IF NO POINTER USE HALFWORD
3414:         MOVSI W1,400000 ;SET FOR HIGH ORDER BIT
3415: FLGLP2: PUSHJ P,PRNTIT
3416:         JUMPE W1,[SKIPE EXFLAG  ;WAS THERE SOMETHING PRINTED
3417:                 POPJ P,         ;YES, EXIT
3418:                 MOVEI T,"0"     ;NO, PRINT A 0
3419:                 JRST TOUT]
3420:         SKIPN EXFLAG
3421:         JRST FLGLP2
3422:         PUSH P,T
3423:         MOVEI T,","
3424:         PUSHJ P,TOUT
3425:         PUSHJ P,TOUT
3426:         POP P,T
3427:         JRST FLGLP2
3428: 
3429: GETPTR: SKIPN R,FLGPTR
3430:         POPJ P,
3431: FLGSLP: HRRZM R,FLGPNT#
3432:         TRNE F,Q2F
3433:         SOSGE WRD2
3434:         JRST CPOPJ1
3435:         HLRZS R
3436:         JUMPE R,CPOPJ
3437:         SKIPE R,(R)
3438:         JRST FLGSLP
3439:         POPJ P,
3440: 
3441: PRNTIT: HRLI R,-=18     ;SET FOR HALF WORD
3442:         SETZM FLGNUM#
3443:         SETZM EXFLAG#   ;NO ! AND NO NUMERIC
3444: FLGLP:  TDNN T,W1
3445:         JRST NOBIT
3446:         SKIPN (R)       ;TEST FOR NAME
3447:         JRST    [IORM W1,FLGNUM ;SAVE BIT
3448:                 JRST NOBIT]
3449:         PUSH P,T
3450:         PUSH P,W1
3451:         MOVEI T,"!"
3452:         SKIPE EXFLAG
3453:         PUSHJ P,TOUT
3454:         MOVE T,(R)
3455:         PUSHJ P,SPT1
3456:         SETOM EXFLAG    ;WE HAVE PUT OUT SOMETHING
3457:         POP P,W1
3458:         POP P,T
3459: NOBIT:  LSH W1,-1
3460:         AOBJN R,FLGLP
3461:         SKIPE FLGNUM
3462:         JRST    [PUSH P,T
3463:                 PUSH P,W1
3464:                 MOVEI T,"!"
3465:                 SKIPE EXFLAG
3466:                 PUSHJ P,TOUT
3467:                 MOVE T,FLGNUM
3468:                 TRNN T,-1       ;CHECK TO SEE IF LEFT HALF
3469:                 MOVSS T
3470:                 PUSHJ P,TOCC
3471:                 POP P,W1
3472:                 POP P,T
3473:                 SETOM EXFLAG
3474:                 POPJ P,]
3475:         POPJ P,
3476: 
3477: FLGMOD: PUSHJ P,GETPTR
3478:         SETZM FLGPNT
3479:         MOVEI SCH,FLGOUT
3480:         JRST BASE1
3481: LFTT:   PUSHJ P,GETPTR
3482:         SETZM FLGPNT
3483:         MOVEI SCH,LFPIN
3484:         JRST BASE1
3485: RFTT:   PUSHJ P,GETPTR
3486:         SETZM FLGPNT
3487:         MOVEI SCH,RFPIN
3488:         JRST BASE1
3489: 
3490: LFFLG:  SKIPN R,FLGPNT
3491:         JRST PI8A       ;NONE THERE
3492: COMFLG: MOVEI W1,400000
3493:         PUSHJ P,PRNTIT
3494:         MOVEI T,"0"
3495:         SKIPN EXFLAG
3496:         PUSHJ P,TOUT
3497:         JRST PI7
3498: RFFLG:  SKIPN R,FLGPNT
3499:         JRST PI8A
3500:         ADDI R,=18
3501:         JRST COMFLG
    DDT page# 0058 next  prev
3503:         JRST DDT
3504: BITO:   MOVEI R,BITT    ; PATCH FOR BYTE OUTPUT WW 12-9-66
3505:         HRRZI AR,TOC
3506:         TRZN F,Q2F
3507:         JRST ERR
3508:         MOVE T,WRD2
3509:         MOVEM T,SVBTS
3510:         MOVEI T,=36
3511:         IDIV T,WRD2
3512:         SKIPE T+1
3513:         ADDI T,1
3514:         MOVEM T,SVBTS2
3515:         HRRZ SCH,R
3516:         JRST BASE1
3517: BITT:   MOVE T+1,T
3518:         SKIPN SVBTS     ;0 IS MASK CONDITION
3519:         JRST BITTM
3520:         MOVE T,SVBTS2
3521:         MOVEM T,SVBT2
3522:         MOVEM T+1,SVBT3
3523: BITT2:  MOVEI T,0
3524:         MOVE T+2,SVBTS
3525:         LSHC T,(T+2)
3526:         MOVEM T+1,SVBT3
3527:         CAIE AR,PADSO
3528:         PUSHJ P,FTOC
3529:         CAIE AR,TOC
3530:         PUSHJ P,PIN
3531:         SOSG SVBT2
3532:         POPJ P,
3533:         MOVEI T,","
3534:         PUSHJ P,TOUT
3535:         MOVE T+1,SVBT3
3536:         JRST BITT2
3537: BITTM:  MOVEI T,=36     ;SET OUTPUT COUNT
3538:         MOVEM T,SVBT3
3539:         MOVE T+2,BMASK  ;GET MASK BITS
3540: BITTM1: MOVEI T,0       ;SET TO SHIFT WORD
3541:         SKIPL T+2       ;START WITH 1 BITS
3542:         SETCA T+2,
3543: BITTM2: LSHC T,1        ;NEXT BIT
3544:         LSH T+2,1       ;SHIFT MASK
3545:         SOSLE SVBT3     ;ALL BITS GONE?
3546:         JUMPL T+2,BITTM2        ;PART OF SAME FIELD
3547:         MOVEM T+2,SVBT2 ;SAVE MASK
3548:         MOVEM T+1,SVBT4 ;AND PARTIAL MASK
3549:         CAIE AR,PADSO   ;DO PROPER OUTPUT
3550:         PUSHJ P,FTOC
3551:         CAIE AR,TOC
3552:         PUSHJ P,PIN
3553:         SKIPG SVBT3     ;ANY MORE?
3554:         POPJ P,         ;NO, RETURN
3555:         MOVEI T,","     ;COMMA
3556:         PUSHJ P,TOUT
3557:         MOVE T+1,SVBT4  ;GET WORD BACK
3558:         MOVE T+2,SVBT2  ;AND MASK
3559:         JRST BITTM1     ;PRINT NEXT FIELD
3560: 
3561: SVBT4:  0
3562: SVBTS:  0
3563: SVBTS2: 0
3564: SVBT3:  0
3565: SVBT2:  0       ;END OF PATCH  WW 12-9-66
3566: 
    DDT page# 0059 next  prev
3568: ;DESCRIPTION OF OP DECODER FOR DDT:
3569: ;
3570: ;         THE ENTIRE INSTRUCTION SET FOR THE PDP-6 CAN BE COMPACTED INTO
3571: ;A SPACE MUCH SMALLER THAN ONE REGISTER FOR EVERY SYMBOL.  THIS OCCURS
3572: ;BECAUSE OF THE MACHINE ORGANIZATION AND INSTRUCTION MNEMONICS CHOSEN
3573: ;FOR THE PDP-6.  FOR EXAMPLE, IF BITS (0-2) OF AN INSTRUCTION EQUAL
3574: ;101(2) THE INSTRUCTION IS A HALF WORD INSTRUCTION AND AN "H" MAY
3575: ;BE ASSUMED. "T" MAY BE ASSUMED FOR ALL TEST INSTRUCTIONS (WHICH
3576: ;BEGIN WITH 110(2).
3577: ;
3578: ;       THE TABLE TBL IN DDT CONSISTS OF 9 BIT BYTES, 4 TO A WORD.
3579: ;THE NUMBERS IN THE BYTES HAVE THE FOLLOWING SIGNIFICANCE:
3580: ;0-37(8):  THIS IS A DISPATCH COMMAND FOR THE OP-DECODER INTERPRETER.
3581: ;       LET THE RIGHT MOST TWO BITS EQUAL N; LET THE NEXT 3 BITS
3582: ;       EQUAL P.
3583: ;
3584: ;       THE CONTENTS OF INST (INSTRUCTION) CONTAIN IN THE RIGHT
3585: ;       MOST NINE BITS THE BINARY FOR THE MACHINE INSTRUCTION.
3586: ;       P AND N REFER TO THE CONTENTS OF INST, AND THE OP DECODER
3587: ;       WILL PRODUCE AN ANSWER D GIVEN P, N, AND THE CONTENTS
3588: ;       OF INSTX N+1 GIVES THE NUMBER OF BITS IN INST; P GIVES THE
3589: ;       POSITION (FROM THE RIGHT EDGE) OF THE N+1 BITS.
3590: ;
3591: ;       EXAMPLE: P = 6
3592: ;                N = 2
3593: ;
3594: ;;      C(INST) = .010 101 100(2)
3595: ;
3596: ;       THE RESULT- D = 010(2) = 2(8)
3597: ;
3598: ;   D IS USED AS A DISPATCH ON THE NEXT BYTES IN THE TABLE.
3599: ;       IF D = 5, 5 BYTES IN THE TABLE (DON'T COUNT THE BYTES WHICH
3600: ;       PRINT TEXT, 41-72(8)) ARE SKIPPED OVER AND THE 6TH BYTE RESUMES
3601: ;       THE INTERPRETATION.
3602: ;
3603: ;40(8)  THIS IS A STOP CODE; WHEN THIS IS REACHED INTERPRETATION
3604: ;       IS FINISHED.
    DDT page# 0060 next  prev
3606: ;41(8)-72(8)      THE ALPHABET IS ENCODED INTO THIS RANGE.
3607: ;               41- A
3608: ;               42- B
3609: ;               72- Z
3610: ;               WHEN A BYTE IN THIS RANGE IS REACHED, ITS CORRESPONDING
3611: ;               LETTER IS TYPED.
3612: ;
3613: ;73(8)-777(8)     THIS IS A TRANSFER BYTE.  IF THE BYTE IN THIS RANGE IS
3614: ;               CONSIDERED TO BE A, TRANSFER INTERPRETATION TO THE A-73(8)RD
3615: ;               BYTE IN THE TABLE.
3616: ;
3617: ;MAROS ASSEMBLE THE TABLE TBL:
3618: ; 1.   A NUMBER FOLLOWED BY ↑ ASSEMBLES A DISPATCH BYTE.  THE FIRST
3619: ;      DIGIT IS THE POSITION; THE SECOND DIGIT IS THE SIZE.
3620: ; 2.   A POINT (.) ASSEMBLES A STOP CODE.
3621: ; 3.   A NAME FOLLOWED BY A SLASH ASSEMBLES A TRANSFER TO THE
3622: ;      SYMBOLICALLY NAMED BYTE.
3623: ; 4.   A STRING OF LETTERS TERMINATED BY A SPACE, COMMA, OR POINT,
3624: ;      ASSEMBLE INTO A STRING OF BYTES, EACH BYTE BEING ONE LETTER.
3625: ;
3626: ;EXAMPLE OF BINARY TO SYMBOLIC DECODING:
3627: ;      THE MACHINE CODE FOR JRST IAS 254
3628: ;          INST    0  1  0  1  0  1  1  0  0
3629: ;      THE INTERPRETER STARTS WITH THE FIRST BYTE IN THE TABLE (63↑).
3630: ;      THE RESULT OF APPLYING THIS TO C(INST) GIVES 2.  SKIPPING OVER
3631: ;      2 BYTES IN THE TABLE AND INTERPRETING THE THIRD RESULTS IN
3632: ;      HAK/ BEING INTERPRETED.  AT HAK:, THERE IS A 33↑.  APPLYING
3633: ;      THIS TO C(INST) RESULTS IN 5 NON PRINTING BYTES BEING SKIPPED
3634: ;      OVER:
3635: ;          1.  MV/
3636: ;               MOV      PRINTING TEXT
3637: ;          2.  MO/
3638: ;          3.  ML/
3639: ;          4.  DV/
3640: ;          5.  SH/
3641: ;
3642: ;H1/ IS THE NEXT BYTE INTERPRETER.  AT H1: 03↑ IS FOUND SO
3643: ;4 BYTES ARE SKIPPED OVER:
3644: ;              EXC      PRINTING TEXT
3645: ;          1.  S3/
3646: ;              BL       PRINTING TEXT
3647: ;              T        PRINTING TEXT
3648: ;          2.  .
3649: ;          3.  AO/
3650: ;          4.  AOB/
3651: ;          THE NEXT LETTERS JRS ARE TYPED OUT.  THEN T/ IS FOUND.  AT
3652: ;T; A T IS TYPED OUT; THEN A "." IS FOUND AND EVERYTHING STOPS.
3653: ;
3654: ;          THE TABLE IS ALSO USED GOING FROM SYMBOLIC TO BINARY BUT A
    DDT page# 0061 next  prev
3656: SUBTTL OP DECODER
3657: 
3658: ;41-72      THE ALPHABET IS ENCODED INTO THIS RANGE.
3659: ;               41- A
3660: ;               42- B
3661: ;               72- Z
3662: ;               WHEN A BYTE IN THIS RANGE IS REACHED, ITS CORRESPONDING
3663: ;               LETTER IS TYPED.
3664: ;
3665: ;73-777     THIS IS A TRANSFER BYTE.  IF THE BYTE IN THIS RANGE IS
3666: ;               CONSIDERED TO BE A, TRANSFER INTERPRETATION TO THE A-73(8)RD
3667: ;               <A-73+FIR.>BYTE IN THE TABLE.
3668: ;
3669: ;MAROS ASSEMBLE THE TABLE TBL:
3670: ; 1.   A NUMBER FOLLOWED BY ↑ ASSEMBLES A DISPATCH BYTE.  THE FIRST
3671: ;      DIGIT IS THE POSITION; THE SECOND DIGIT IS THE SIZE.
3672: ; 2.   A POINT (.) ASSEMBLES A STOP CODE.
3673: ; 3.   A NAME FOLLOWED BY A SLASH ASSEMBLES A TRANSFER TO THE
3674: ;      SYMBOLICALLY NAMED BYTE.
3675: ; 4.   A STRING OF LETTERS TERMINATED BY A SPACE, COMMA, OR POINT,
3676: ;      ASSEMBLE INTO A STRING OF BYTES, EACH BYTE BEING ONE LETTER.
3677: ;
3678: ;EXAMPLE OF BINARY TO SYMBOLIC DECODING:
3679: ;      THE MACHINE CODE FOR JRST IS 254
3680: ;          INST    0  1  0  1  0  1  1  0  0
3681: ;      THE INTERPERTED STARTS WITH THE FIRST BYTE IN THE TABLE (63↑).
3682: ;      THE RESULT OF APPLYING THIS TO C(INST) GIVES 2.  SKIPPING OVER
3683: ;      2 BYTES IN THE TABLE AND INTERPRETING THE THIRD RESULTS IN
3684: ;      HAK/ BEING INTERPRETED.  AT HAK:, THERE IS A 33↑.  APPLYING
3685: ;      THIS TO C(INST) RESULTS IN 5 NON PRINTING BYTES BEING SKIPPED
3686: ;      OVER:
3687: ;          1.  MV/
3688: ;               MOV      PRINTING TEXT
3689: ;          2.  MO/
3690: ;          3.  ML/
3691: ;          4.  DV/
3692: ;          5.  SH/
3693: ;
3694: ;H1/ IS THE NEXT BYTE INTERPRETER.  AT H1: 03↑ IS FOUND SO
3695: ;4 BYTES ARE SKIPPED OVER:
3696: ;              EXC      PRINTING TEXT
3697: ;          1.  S3/
3698: ;              BL       PRINTING TEXT
3699: ;              T        PRINTING TEXT
3700: ;          2.  .
3701: ;          3.  AO/
3702: ;          4.  AOB/
3703: ;          THE NEXT LETTERS JRS ARE TYPED OUT.  THEN T/ IS FOUND.  AT
3704: ;T: A " T " IS TYPED OUT; THEN A "." IS FOUND AND EVERYTHING STOPS.
3705: ;
3706: ;          THE TABLE IS ALSO USED GOING FROM SYMBOLIC TO BINARY BUT A
    DDT page# 0062 next  prev
3708: BEGIN OPDEFS
3709: XLIST
3710: DEFINE P' (A)
3711: <OUTP A&70/2+A&7-1
3712: >
3713: DEFINE G' (A)
3714: <OUTP A+73
3715: >
3716: DEFINE T' (A)
3717: <FOR Bε<A> <OUTP "B"-40
3718: >>
3719: DEFINE S' (Q)
3720: <OUTP 40
3721: >
3722: DEFINE L' (A)
3723: <IFGE CLOC+73-2000,<PRINTX OPTABLE TOO LONG>
3724: A←←CLOC
3725: >
3726: DEFINE OUTP' (A)
3727: <CLOC←←CLOC+1
3728: >
3729: DEFINE BYT9' (A)
3730: <FOR B(A) <B
3731: >>
3732: 
3733: TBL:
3734: BINRY←←0
3735: CLOC←←0
3736: BINC←←3
3737: 
3738: DEFINE TABLE <
3739: BYT9 <P 63,G %UUO,G %FLO,G %HAK,G %ACCP,G %BOOLE,T H,G %HWT,T T,G %ACBM>
3740: BYT9 <P 21,G %BD,T CON,P 11,G %OI,T S,P 01,G %Z,G %O>
3741: BYT9 <L %BD,P 01,T BLK,G %IO,T DATA,L %IO,P 11,G %I,G %O,L %OI,P 1,G %O,G %I>
3742: BYT9 <L %UUO,P 51,S,P 32,G %U40,G %U50,G %U60,P 21,G %U703,P 11,G %USET>
3743: BYT9 <P 1,T LOOKU,G %P,T ENTE,G %R,L %USET,T USET,P 1,G %I,G %O>
3744: BYT9 <L %U40,P 3,G %U47,T INI,G %T,S,T SPCWA,G %R,S,S,S,L %U47,T CALL>
3745: BYT9 <P 1,S,G %I,L %U60,P 21,G %U603,P 1,T IN,G %BPUT,T OUT,L %BPUT>
3746: BYT9 <P 11,T BU,L %F,T F,S,T PU,G %T,L %U50,P 3,T OPE,G %N,S,S,S,S>
3747: BYT9 <T RENAM,G %E,T I,G %N,T OU,G %T,L %U603,P 1,G %U6062,T STAT>
3748: BYT9 <P 11,L %O,T O,S,L %Z,T Z,S,L %U6062,P 11,T S,G %U62,T G,L %U62>
3749: BYT9 <T ETST,G %S,L %U703,P 2,T CLOS,G %E,T RELEA,G %S,T MTAP,G %E>
3750: BYT9 <T UGET,G %F>
3751: 
3752: BYT9 <L %FLO,P 51,G %BYTE,T F,P 32,T AD,G %A,T SB,G %A,T MP,G %A,T DV>
3753: BYT9 <L %A,P 21,G %LMB,T R,L %LMB,P 2,S,L %L,T L,S,L %M,T M,S,L %B>
3754: BYT9 <T B,S,L %BYTE,P 32,S,S,S,P 3,S,S,T FS,G %C,T IB,L %P,T P,S>
3755: BYT9 <T I,G %LD,L %LD,T LD,G %B,T I,G %DP,L %DP,T DP,G %B>
3756: 
3757: BYT9 <L %HAK,P 33,G %MV,L %MV,T MOV,G %MO,G %ML,G %DV,G %SH,G %H1>
3758: BYT9 <G %JP,P 21,T ADD,G %IMB,T SU,L %BIMB,T B,L %IMB,P 2>
3759: BYT9 <S,L %I,T I,S,G %M,G %B,L %MO,P 22,L %EIMS,T E,G %IMS,T S>
3760: BYT9 <G %IMS,T N,G %IMS,T M,L %IMS,P 2,S,G %I,G %M,L %S,T S,S>
3761: BYT9 <L %ML,P 21,T I,G %ML1,L %ML1,T MUL,G %IMB,L %DV,P 21,T I,G %DV1>
3762: BYT9 <L %DV1,T DI,L %DV2,T V,G %IMB,L %H1,P 3,T EXC,G %S3,T BL,L %T>
3763: BYT9 <T T,S,G %AO,L %AO,T AOBJ,G %AOB,T JRS,G %T,T JFC,G %L,T XC,G %T>
3764: BYT9 <T CON,G %S,L %AOB,P 1,G %P,G %N,L %JP,P 3,G %PU,L %PU,T PUSH>
3765: BYT9 <G %PUS,G %PO,L %PO,T POP,G %POP,T JS,L %R,T R,S,T JS,G %P>
3766: BYT9 <T JS,L %PA,T A,S,T JR,G %PA,L %PUS,P 1,L %J,T J,S,S,L %POP>
3767: BYT9 <P 1,S,G %J,L %SH,P 2,T A,G %S2,T ROT,G %S1,T L,L %S2,T S,L %S3>
3768: BYT9 <T H,G %S1,P 21,T JFF,G %O,T FIX,S,L %S1,P 21,S,L %C,T C,S>
3769: 
3770: BYT9 <L %ACCP,P 42,T CA,G %CA1,G %SJ,T A,G %JS,T S,L %JS,T O,P 31>
3771: BYT9 <T J,G %COMP,T S,G %COMP,L %CA1,P 31,T I,G %COMP,T M,G %COMP>
3772: BYT9 <L %SJ,P 31,T JUM,G %PSJ,T SKI,L %PSJ,T P,L %COMP>
3773: BYT9 <P 3,S,G %L,L %E,T E,S,T L,G %E,G %PA,T G,G %E,L %N,T N,S,T G,S>
3774: 
3775: BYT9 <L %HWT,P 51,G %HW1,P 21,T R,G %HW2,T L,L %HW2,T R,G %HW3,L %HW1>
3776: BYT9 <P 21,T L,G %HW4,T R,L %HW4,T L,L %HW3,P 32,G %IMS,T Z,G %IMS,T O>
3777: BYT9 <G %IMS,G %EIMS>
3778: 
3779: BYT9 <L %ACBM,P 31,G %AC1,P 1,T D,G %AC2,T S,G %AC2,L %AC1,P 1,T R>
3780: BYT9 <G %AC2,T L,L %AC2,P 42,T N,G %EAN,T Z,G %EAN,T C,G %EAN,T O>
3781: BYT9 <L %EAN,P 12,S,G %E,G %PA,G %N>
3782: 
3783: BYT9 <L %CB,T C,G %BIMB,L %BOOLE,P 24,G %ST,L %AN,T AND,G %B2,G %AN>
3784: BYT9 <G %ST,G %AN,G %ST,T X,L %OR,T OR,G %B2,T I,G %OR,G %AN,T EQ>
3785: BYT9 <G %DV2,G %ST,G %OR,G %ST,G %OR,G %OR,L %ST,T SET,L %B2>
3786: BYT9 <P 24,T Z,G %IMB,G %IMB,L %CA,T C,G %TA,L %TM,T M,G %IMB,L %CM>
3787: BYT9 <T C,G %TM,L %TA,T A,G %IMB,G %IMB,G %IMB,T C,G %BIMB,G %IMB,G %CA>
3788: BYT9 <G %CA,G %CM,G %CM,G %CB,T O,G %IMB>>
3789: TABLE
3790: DEFINE OUTP (A)
3791: <BINRY←←BINRY12+A
3792: BINC←←BINC-1
3793: IFE BINC,<XLIST
3794: BINRY6
3795: BINRY←←0
3796: BINC←←3
3797: >
3798: CLOC←←CLOC+1
3799: >
3800: CLOC←←0
3801: TABLE
3802: REPEAT BINC,<BINRY←←BINRY12>
3803: IFN BINRY,<BINRY6>
3804: 
3805: LIST
3806: BEND
    DDT page# 0063 next  prev
3808: PNTR:   INST    ;POINTER TO BITS IN INST
3809: INST:   0               ;BINARY FOR INSTRUCTION
3810: CHP:    0               ;CHAR POINTER INTO TXT, TXT+1
3811: TXT:    BLOCK 2         ;STORE INPUT TEXT FOR OPEVAL
3812: SAVPDL: 0               ;SAVE PUSH DOWN LIST POINTER
3813: 
3814: BTAB:   POINT 10,TBL    ;TABLE USED TO GET NEXT BYTE POINTER
3815:         POINT 10,TBL,9  ;FOR TRANSFER BYTE
3816:         POINT 10,TBL,19
3817: 
3818: OPEVAL: MOVEI T,0               ;EVALUATE FOR AN OP CODE
3819:         IDPB T,CHP
3820:         MOVEM P,SAVPDL
3821:         TRZA F,OUTF
3822: OPTYPE: TRO F,OUTF              ;TYPE AN OPCODE SYMBOLICALLY
3823:         LSH T,-33
3824:         MOVEM T,INST            ;GET OPCODE INTO RIGHT 9 BITS
3825:         MOVE T,[XWD 440700,TXT]
3826:         MOVEM T,CHP             ;FOR OPEVAL,SETUP POINTER TO INPUT TEXT
3827:         TRZ F,ITF               ;CLEAR INSTRUCTION TYPED FLAG
3828:         SETZB  R,W1
3829:         MOVE W2,BTAB
3830: DC1:    ILDB T,W2               ;GET NEXT BYTE IN TBL
3831:         CAILE T,40
3832:         CAIL T,73
3833:         SOJGE R,DC1             ;SKIP OVER # BYTES = C(R)
3834:         JUMPG R,DC1             ;SKIP OVER ALPHA TEXT WITHOUT COUNTING
3835:         SUBI T,40
3836:         JUMPE T,DECX            ;TRANSFER ON ASTOP CODE
3837:         JUMPG T,DC2
3838:         DPB T,[XWD 340500,PNTR] ;SETUP R ON A DISPATCH BYTE
3839:         TRZ T,-4
3840:         AOS T
3841:         DPB T,[XWD 300600,PNTR]
3842:         TRNN F,OUTF
3843:         JRST DC6                ;FOR OPEVAL ONLY
3844:         LDB R,PNTR              ;GET # BYTES TO SKIP OVER
3845:         JRST DC1
3846: 
3847: DC2:    HRREI T,-33(T)
3848:         JUMPL T,DECT            ;TYPE OUT A LETTER
3849:         MOVE W1,T               ;BYTE IS A TRANSFER
3850:         IDIVI W1,3
3851:         MOVE W2,BTAB(W2)        ;CALCULATE POINTER TO NEXT BYTE
3852:         ADDI W2,(W1)
3853:         JRST DC1
3854: 
    DDT page# 0064 next  prev
3856: DECT:   TRNE F,OUTF
3857:         JRST DC8        ;TYPE OUT A LETTER
3858:         ILDB W1,CHP     ;GET NEXT INPUT LETTER
3859:         CAIE W1,133(T)  ;COMPARE WITH ASSUMED NEXT LETTER
3860:         JRST NOMAT      ;DOESNT MATCH
3861:         JRST DC1        ;MATCHES, TRY NEXT
3862: 
3863: DECX:   TRNE F,OUTF     ;STOP (CODE 40) HAS BEEN SEEN
3864:         POPJ P,         ;IF FOR OUTPUT, RETURN
3865:         ILDB W1,CHP     ;GET NEXT INPUT CHAR IF ANY
3866:         JUMPE W1,DC7    ;DOES # OF CHARS MATCH
3867: NOMAT:  POP P,R         ;NO, BACK UP AND TRY SOME MORE
3868:         POP P,W2
3869:         POP P,PNTR
3870:         POP P,CHP
3871: NOMAT1: AOS R           ;ASSUME NEXT NUMBER FOR BIN VALUE
3872:         DPB R,PNTR      ;STUFF INTO ANSWER
3873:         LDB R,PNTR
3874:         JUMPN R,DC6AA   ;IF =0, BYTE WAS TOO BIG
3875:         CAME P,SAVPDL
3876:         JRST NOMAT      ;NOT AT TOP LEVEL
3877:    POPJ P,         ;UNDEFINED, FINALLY
3878: 
3879: DC6:    MOVEI R,0       ;ASSUME 0 FOR INITIAL BINARY VALUE
3880:         DPB R,PNTR
3881: DC6AA:  CAMN P,SAVPDL
3882:         JRST DC6BB
3883:         LDB T,-2(P)     ;OLD VALUE OF PNTR
3884:         CAME T,(P)
3885:         JRST NOMAT1
3886: DC6BB:  PUSH P,CHP
3887:         PUSH P,PNTR
3888:         PUSH P,W2
3889:         PUSH P,R
3890:         JRST DC1
3891: 
3892: DC7:    MOVE P,SAVPDL           ;RESTORE PUSH DOWN POINTER
3893:         MOVE T,INST
3894:         LSH T,33                ;PUSH BINARY INTO POSITION FOR OPEVAL
3895:         TLC T,700000
3896:         TLCE T,700000
3897:         JRST CPOPJ1
3898:         SETOM IOTFLG    ;IT IS AN IOT
3899:         LDB R,[POINT 3,T,8]
3900:         DPB R,[POINT 10,T,12]   ;ONLY DONE FOR IO INSTRUCTIONS
3901:         JRST CPOPJ1
3902: 
3903: DC8:    TRO F,ITF               ;SET INSTRUCTION TYPED FLAG
3904:         MOVEI T,133(T)
3905:         PUSHJ P,TOUT            ;OUTPUT A LETTER
3906:    SETZM  SPSAV            ;SO $D WONT TRY TO DELETE OP CODES
3907:         JRST DC1
    DDT page# 0065 next  prev
3909: PATCH:  BLOCK 10
3910: 
3911: IFN EDDT&1&<EDDT>B36,<
3912: BUFF:   BLOCK 40>
    DDT page# 0066 next  prev
3914: IFN UEDDTS,<
3915: FBDATA: BLOCK   40                              ;FOR DATA FROM/TO L'SCOPE
3916: UESTRT: SETZM EXJOBN            ;JOB WE ARE EXAMINING!
3917:         SETZM EXSYMS
3918:         MOVEI S,37
3919:         CALL S,['PEEK  ']
3920:         MOVEM S,MEMSIZ#
3921:         MOVE T,S
3922:         ANDI S,MAXPR-1
3923:         HRLZM S,PRSIZ#
3924:         ANDI T,¬<MAXPR-1>
3925:         MOVEM T,PRTOP#
3926:         SETZM SYMSYS#
3927:         SETZM SYMLUZ#
3928:         MOVEI   S,265
3929:         CALLI   S,33            ;PEEK ADDRESS OF SYSTOP
3930:         CALLI   S,33            ;PEEK SYSTOP ITSELF
3931:         MOVEM   S,SYSTOP#
3932:         MOVEI T,
3933:         MOVEI P,PS
3934:         PUSHJ P,PRSET
3935:         MOVEI S,DDTEND
3936:         MOVE T,74
3937:         CAIN T,DDT              ;ARE WE "THE" DEBUGGER?
3938:         MOVEM S,JOBFF           ;FLUSH SYMS IF NOT BEING DEBUGGED
3939:         SKIPN S,400036
3940:         JRST SYMCOP
3941:         OUTSTR[ASCIZ/COPY SYMBOLS?/]
3942:         INCHRW W
3943:         CAIN W,15
3944:         INCHRW W
3945:         CAIE W,"Y"
3946:         CAIN W,"y"
3947:         JRST SYMCOP
3948:         TRO S,400000
3949:         MOVEM S,EXCSYM#         ;LOOK DIRECTLY INTO SYSTEM FOR SYMBOLS
3950:         MOVE S,JOBFF            ;MAYBE SHRINK?
3951:         CALLI S,11
3952:         JFCL
3953:         SETOM SYMSYS
3954:         JRST NOCOP
3955: 
3956: SYMCOP: MOVEI P,PS              ;GET A STACK
3957:         PUSHJ P,COPSYM          ;GET SOME SYMBOLS
3958: NOCOP:  SETZM SPCFLG#
3959:         JRST DDT
3960: 
3961: COPSYM: SKIPE EXSYMS            ;WHOSE SYMBOLS ARE WE LOOKING AT?
3962:         JRST USYMS
3963: ESYMS:  SETZM EXSYMS            ;IN CASE WE JUMPED HERE
3964:         SKIPN R,400036  ;EXEC SYMBOL POINTER
3965:         JRST NOSYMS     ;TRY DISK
3966:         JRST CSYMS      ;COPY THEM IN
3967: 
3968: USYMS:  MOVEI R,JOBSYM
3969:         PUSHJ P,FETCH   ;FETCH LOSER JOBSYM
3970:         SETZ T,
3971:         JUMPE T,ESYMS   ;IF NO SYMBOLS, TRY SYSTEM SYMS
3972:         MOVE R,T
3973: CSYMS:  HLRO T,R
3974:         MOVNS T
3975:         ADD T,JOBFF
3976:         IORI T,1777
3977:         CALLI T,11
3978:         JRST NOCORE
3979:         HLRO W1,R
3980:         ADD W1,JOBREL
3981:         HLL W1,R
3982:         HRRM W1,EXCSYM
3983:         HLLM R,EXCSYM
3984: UELP1:  PUSHJ P,FETCH
3985:         SETZ T,         ;STORE A 0
3986:         MOVEM T,(W1)
3987:         ADDI R,1
3988:         AOBJN W1,UELP1
3989:         POPJ P,
3990: 
3991: NOSYMS: SETZM EXCSYM    ;NO SYMBOLS YET!
3992:         MOVE W,JOBFF
3993:         MOVEI S,42(W)   ;MAKE ENOUGH ROOM FOR ONE SECTOR
3994:         CALLI S,11      ;GET IT
3995:         JRST NOCORE     ;CAN'T
3996:         MOVEI S,400100  ;SYSBAND
3997:         MOVEM W,WCMA    ;WHERE TO
3998:         MOVEI W2,40
3999:         MOVEM W2,WCMA+1 ;# OF WORDS
4000:         SETZM WCMA+2    ;SECTOR 0
4001:         FBREAD S,WCMA
4002:         JRST FBERR
4003:         SKIPN W2,36(W)  ;GET EXCSYM FROM DISK
4004:         JRST NOSYM1     ;NONE THERE EITHER!
4005:         MOVEI W1,(W2)   ;ADDR OF SYMBOLS
4006:         LSH W1,-5       ;SECTOR
4007:         MOVEM W1,WCMA+2 ;TO MEM
4008:         HLRO W1,W2      ;-# OF WORDS
4009:         MOVNS W1
4010:         ADDI W1,40      ;BUGGER
4011:         MOVEM W1,WCMA+1 ;COUNT
4012:         ADDI W1,2(W)    ;NEW TOP OF CORE
4013:         CALLI W1,11             ;GET MORE CORE
4014:         JRST NOCORE
4015:         FBREAD S,WCMA
4016:         JRST FBERR
4017:         MOVEI W1,(W2)
4018:         ANDI W1,37
4019:         ADD W1,W                ;LOC OF NEW SYMBOL TABLE
4020:         HRRM W1,EXCSYM
4021:         HLLM W2,EXCSYM
4022:         POPJ P,
4023: 
4024: NOCORE: OUTSTR[ASCIZ/CAN'T GET CORE/]
4025:         POPJ P,
4026: 
4027: FBERR:  OUTSTR[ASCIZ/FAST BAND ERROR!/]
4028:         POPJ P,
4029: 
4030: NOSYM1: OUTSTR[ASCIZ/NO SYMBOLS ANYWHERE???/]
4031:         POPJ P,
4032: 
4033: WCMA:   BLOCK 3
4034: 
4035: EXSYMS: 0
4036: EXJOBN: 0
4037:         -1,,0
4038:         EXJWRD
4039: EXJWRD: 0
4040: 
4041: DDTREN: SETZ T,
4042:         GETPRV T,               ;GET CURRENT PRIVILEGES
4043:         TLNN T,40               ;DOES HE HAVE ACW PRV?
4044:         JRST NOREN
4045:         SETOM SPCFLG
4046:         SETZM SPCADR
4047:         TLNN T,4                ;FBW PRV?
4048:         OUTSTR[ASCIZ/FAST BAND WRITE NOT ENABLED.
4049: /]
4050:         JRST DDT
4051: 
4052: NOREN:  OUTSTR[ASCIZ/SORRY, YOU CAN'T DO THAT!
4053: /]
4054:         JRST DDT
4055: 
4056: DDTSPC: SKIPN SPCADR
4057:         CALLI 400024
4058:         MOVE 1,SPCADR#
4059:         MOVE 3,SPCWRD#
4060:         CONSO 1B24
4061:         TDZA 4,4
4062:         MOVEI 4,1
4063:         DATAO 104,[0]           ;DISABLE SYS WR DETECTOR
4064:         HRROS 2
4065:         DATAO 2
4066:         MOVNS 2
4067:         ADD 1,2
4068:         MOVEM 3,(1)
4069:         DATAO 104,4
4070:         SETZM SPCADR
4071:         CALLI 400024
4072: 
4073: SYMPR:  HRRZ T,EXCSYM
4074:         TRZ T,400000
4075: PRSET:  ANDI T,¬<MAXPR-1>
4076:         CAME T,PRTOP
4077:         TLOA T,<MAXPR-1>&376001
4078:         HLL T,PRSIZ
4079:         SETPR2 T,
4080:         JRST PRLUZ
4081:         TLO T,1777
4082:         HLRZM T,PRMAX#
4083:         MOVNS T
4084:         HRRM T,PROFF
4085:         SKIPN SYMSYS
4086:         POPJ P,
4087:         ADD T,EXCSYM
4088:         SETZM SYMLUZ
4089:         MOVEI T,-400000(T)
4090:         CAMLE T,PRMAX
4091:         SETOM SYMLUZ
4092:         POPJ P,
4093: 
4094: PRLUZ:  OUTSTR [ASCIZ /SETPR2 FAILED!
4095: /]
4096:         JRST 4,.
4097: 
4098: PROFF:  (R)
4099: 
4100: LOGIT:  INIT 17
4101:         'DSK   '
4102:         0
4103:         POPJ P,                 ;BARF
4104:         MOVE T,['  SSYS']
4105:         MOVEM T,LOGPPN
4106:         LOOKUP LOGNAM
4107:         JRST [  HRRZ T,LOGEXT
4108:                 JUMPN T,LOGLOS  ;BARF
4109:         LOGZ0:  SETZM LOGBUF
4110:                 SETZM LOGPTR
4111:                 AOS LOGPTR
4112:                 JRST LOGOUT]
4113:         EXCH T,LOGPPN
4114:         MOVS T,T
4115:         MOVN T,T
4116:         SOJL T,LOGZ0
4117:         LSH T,-7
4118:         ADDI T,1
4119:         MOVEM T,LOGPTR
4120:         USETI @LOGPTR
4121:         IN[IOWD 200,LOGBUF0]
4122:         JRST LOGOUT
4123:         STATO 1B22
4124:         JRST LOGLOS
4125: LOGOUT: HLLZS LOGEXT
4126:         SETZM LOGDAT
4127:         ENTER LOGNAM
4128:         JRST LOGLOS
4129:         MOVE R,[POINT 7,LOGBUF]
4130: LOGZ:   ILDB T,R
4131:         JUMPN T,LOGZ
4132:         ADD R,[70000,,0]
4133:         PUSH P,W1
4134:         PUSH P,W2
4135:         GETPPN W2,
4136:         PUSHJ P,LOGSIX
4137:         PUSHJ P,INLMES
4138:         ASCIZ/  (/
4139:         PJOB W1,
4140:         PUSHJ P,LOGDEC
4141:         PUSHJ P,INLMES
4142:         ASCIZ/.)        TTY/
4143:         SETO W1,
4144:         GETLIN W1
4145:         HRRZ W1,W1
4146:         PUSHJ P,LOGOCT
4147:         MOVEI W1,11
4148:         PUSHJ P,LOGCHR
4149:         DATE W1,
4150:         IDIVI W1,=31
4151:         PUSH P,W2
4152:         IDIVI W1,=12
4153:         EXCH W1,(P)
4154:         PUSH P,W1
4155:         MOVEI W1,1(W2)
4156:         PUSHJ P,LOGDC2
4157:         MOVEI W1,"-"
4158:         PUSHJ P,LOGCHR
4159:         POP P,W1
4160:         ADDI W1,1
4161:         PUSHJ P,LOGDC2
4162:         MOVEI W1,"-"
4163:         PUSHJ P,LOGCHR
4164:         POP P,W1
4165:         ADDI W1,=64
4166:         PUSHJ P,LOGDEC
4167:         MOVEI W1," "
4168:         PUSHJ P,LOGCHR
4169:         MSTIME W1,
4170:         IDIVI W1,=1000*=60
4171:         IDIVI W1,=60
4172:         PUSH P,W2
4173:         PUSHJ P,LOGDC2
4174:         POP P,W1
4175:         PUSHJ P,LOGDC2
4176:         MOVEI W1,11
4177:         PUSHJ P,LOGCHR
4178:         HRRZ W1,SPCADR
4179:         PUSHJ P,LOGOCT
4180:         PUSHJ P,INLMES
4181:         ASCIZ ?/        ?
4182:         MOVE W1,SPCADR
4183:         PEEK W1,
4184:         SETZM LOGCNT
4185:         PUSHJ P,LOGWRD
4186:         MOVEI W1,11
4187:         MOVE W2,LOGCNT
4188:         CAIGE W2,8
4189:         PUSHJ P,LOGCHR
4190:         PUSHJ P,LOGCHR
4191:         MOVE W1,SPCWRD
4192:         PUSHJ P,LOGWRD
4193:         PUSHJ P,INLMES
4194:         ASCIZ/
4195: /
4196:         SETZ W1,
4197: LOGZ1:  PUSHJ P,LOGCHR
4198:         TLNE R,760000                   ;FILL OUT WORD
4199:         JRST LOGZ1
4200:         HRRZ R,R
4201:         SUBI R,LOGBUF-1                 ;GET # OF WORDS
4202:         MOVN R,R
4203:         MOVS R,R
4204:         HRRI R,LOGBUF-1
4205:         MOVEM R,LOGADR
4206:         USETO @LOGPTR
4207:         OUTPUT LOGADR
4208:         POP P,W2
4209:         POP P,W1
4210:         MOVE T,SPCWRD
4211:         MOVE R,SPCADR
4212: LOGLOS: RELEASE
4213:         POPJ P,
4214: 
4215: LOGDC2: CAIL W1,=10
4216:         JRST LOGDEC
4217:         PUSH P,W1
4218:         MOVEI W1,"0"
4219:         PUSHJ P,LOGCHR
4220:         POP P,W1
4221:         JRST LOGDEC
4222: 
4223: LOGWRD: HRLM W1,(P)
4224:         HLRZ W1,W1
4225:         PUSHJ P,LOGOCT
4226:         PUSHJ P,INLMES
4227:         ASCIZ/,,/
4228:         HLRZ W1,(P)
4229: LOGOCT: SKIPA T,[10]
4230: LOGDEC: MOVEI T,=10
4231: LOGNUM: IDIV W1,T
4232:         HRLM W2,(P)
4233:         JUMPE W1,.+2
4234:         PUSHJ P,LOGNUM
4235:         HLRZ W1,(P)
4236:         ADDI W1,60
4237: LOGCHR: CAME R,[POINT 7,LOGBUF+177,34]  ;END OF BUFFER?
4238:         JRST LOGOK                      ;NO
4239:         USETO @LOGPTR
4240:         OUTPUT[IOWD 200,LOGBUF0]
4241:         MOVE R,[POINT 7,LOGBUF]
4242:         AOS LOGPTR
4243: LOGOK:  IDPB W1,R
4244:         AOS LOGCNT
4245:         POPJ P,
4246: 
4247: LOGSIX: JUMPE W2,CPOPJ
4248:         SETZ W1,
4249:         LSHC W1,6
4250:         ADDI W1,40
4251:         PUSHJ P,LOGCHR
4252:         JRST LOGSIX
4253: 
4254: INLMES: POP P,W2
4255:         HRLI W2,(<POINT 7,0>)
4256: INLMS1: ILDB W1,W2
4257:         JUMPE W1,1(W2)
4258:         PUSHJ P,LOGCHR
4259:         JRST INLMS1
4260: 
4261: LOGCNT: 0
4262: LOGPTR: 0
4263: LOGADR: 0
4264:         0
4265: 
4266: LOGBUF: BLOCK 201
4267: 
4268: LOGNAM: 'UEDDT '
4269: LOGEXT: 'LOG   '
4270: LOGDAT: 0
4271: LOGPPN: '  SSYS'
4272: >
4273: 
4274: ;KEEP IT ALL TOGETHER FOR SWAPPING DDT
4275: LIT
4276: VAR
4277: 
4278: XP DDTEND,.
4279: ↑↑DDTEND←DDTEND
4280: 
4281: IFE EDDT&1,<IFE UEDDTS!SAVESW,<END>
4282:         IFN UEDDTS,<END UESTRT>
4283:         IFN SAVESW,<END DDT>>
4284: IFE EDDT&41-1,<BEND>
4285: IFN EDDT&40,<END>
4286: >
 EOF: DDT end-of-file. cnt=65